我的应用程序中有一个socket.io服务器,正在侦听端口5759。
在我的代码中的某个时刻,我需要关闭服务器所以不要再听任何。
我该如何做到这一点?
Socket.io没有在http服务器上侦听。
答案 0 :(得分:16)
你有一台服务器:
var io = require('socket.io').listen(8000);
io.sockets.on('connection', function(socket) {
socket.emit('socket_is_connected','You are connected!');
});
停止接收传入连接
io.server.close();
注意:这不会关闭现有连接,这些连接将在关闭之前等待超时。要立即关闭它们,首先要建立一个连接套接字列表
var socketlist = [];
io.sockets.on('connection', function(socket) {
socketlist.push(socket);
socket.emit('socket_is_connected','You are connected!');
socket.on('close', function () {
console.log('socket closed');
socketlist.splice(socketlist.indexOf(socket), 1);
});
});
然后关闭所有现有连接
socketlist.forEach(function(socket) {
socket.destroy();
});
逻辑从这里开始:How do I shutdown a Node.js http(s) server immediately?
答案 1 :(得分:12)
这个api在socket.io v1.1.x中再次发生了变化 现在是:
io.close()
答案 2 :(得分:3)
API已更改。要停止接收传入连接,您应该运行:
io.httpServer.close();