当客户端使用 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()
目标:当客户端发出消息时关闭服务器。
我可以确认客户端在记录时发送响应:'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()