Skip to content

Socket server tries to close external http server, causing ERR_SERVER_NOT_RUNNING error #4546

@panta82

Description

@panta82

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:

this.httpServer.close(fn);

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();

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions