Socket server tries to close external http server, causing `ERR_SERVER_NOT_RUNNING` error
Describe the bug
When you initialize socket server, you can either give it an external instance of HTTPServer, or let socket.io create its own internal instance.
However, in either case, SocketIO tries to close the server when shutting down:
https://github.com/socketio/socket.io/blob/3b7ced7af7e0a2a66392577f94af1ee5ed190ab1/lib/index.ts#L685
In my case, I have my own shutdown procedure elsewhere, and it causes server to throw ERR_SERVER_NOT_RUNNING error, because server.close() was called twice.
This might be appearing now due to new stricter behavior in node.js, I am not sure. This is running on v14.17.3.
Expected behavior
IMO socket.io should only close HTTP server if it's its own instance. If an instance is provided, it's someone else's responsibility to close that server. Socket.IO shouldn't interfere.
Mitigation
I am currently using this hack to prevent the uncaught exception:
ioServer['httpServer'] = null;
ioServer.close();
Hi! Yes this is a known issue, we will update the behavior in the next major release.
See: https://github.com/socketio/socket.io/discussions/4529