当客户端使用 Socket.io 发送到服务器时关闭快速服务器

Close express server when client emits to server with Socket.io

目标:当客户端发出消息时关闭服务器。
我可以确认客户端在记录时发送响应:'hit server

快递的服务器代码是:

io.on('connection', (socket) => {
  console.log('this is connected');
  socket.on('message', function(data){
    console.log('hit server');
    server.close();
  })

});

io.on('error', function() {
  console.log('there is an error');
})

server.listen(3000, () => {
  console.log('listen on *:3000');
});

要停止您正在使用 socket.io 的 Express 服务器,您首先要调用:

server.close();

这会阻止它接受新的 http 连接。然后您可以迭代现有的 socket.io 个连接并关闭它们中的每一个:

const sockets = await io.fetchSockets();
for (let socket of sockets) {
    socket.disconnect(true);
}

理论上,这可能会留下一些仍在处理中的常规 http 连接,但最终会完成或超时。

server.getConnections(callback)

会告诉你是否还有未完成的连接。


如果您只是想关闭一切,包括您的应用程序,您可以拨打:

process.exit()