* Closes server connection * * @param [fn] optional, called as `fn([err])` on error OR all conns closed
(fn?: (err?: Error) => void)
| 820 | * @param [fn] optional, called as `fn([err])` on error OR all conns closed |
| 821 | */ |
| 822 | public async close(fn?: (err?: Error) => void): Promise<void> { |
| 823 | await Promise.allSettled( |
| 824 | [...this._nsps.values()].map(async (nsp) => { |
| 825 | nsp.sockets.forEach((socket) => { |
| 826 | socket._onclose(class="st">"server shutting down"); |
| 827 | }); |
| 828 | |
| 829 | await nsp.adapter.close(); |
| 830 | }), |
| 831 | ); |
| 832 | |
| 833 | this.engine.close(); |
| 834 | |
| 835 | class="cm">// restore the Adapter prototype, when the Socket.IO server was attached to a uWebSockets.js server |
| 836 | restoreAdapter(); |
| 837 | |
| 838 | if (this.httpServer) { |
| 839 | return new Promise<void>((resolve) => { |
| 840 | this.httpServer.close((err) => { |
| 841 | fn && fn(err); |
| 842 | if (err) { |
| 843 | debug(class="st">"server was not running"); |
| 844 | } |
| 845 | resolve(); |
| 846 | }); |
| 847 | }); |
| 848 | } else { |
| 849 | fn && fn(); |
| 850 | } |
| 851 | } |
| 852 | |
| 853 | /** |
| 854 | * Registers a middleware, which is a function that gets executed for every incoming {@link Socket}. |
no test coverage detected