Socket.io - 关闭服务器

Ari*_*rad 12 node.js socket.io

我的应用程序中有一个socket.io服务器,正在侦听端口5759.

在我的代码中的某个时刻,我需要关闭服务器,因为它不是在听任何东西.

我怎么能做到这一点?

Socket.io没有在http服务器上侦听.

use*_*109 16

你有一台服务器:

var io = require('socket.io').listen(8000);
io.sockets.on('connection', function(socket) {
    socket.emit('socket_is_connected','You are connected!');
});
Run Code Online (Sandbox Code Playgroud)

停止接收传入连接

io.server.close();
Run Code Online (Sandbox Code Playgroud)

注意:这不会关闭现有连接,这些连接将在关闭之前等待超时.要立即关闭它们,请首先列出已连接的套接字列表

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);
    });
});
Run Code Online (Sandbox Code Playgroud)

然后关闭所有现有连接

socketlist.forEach(function(socket) {
  socket.destroy();
});
Run Code Online (Sandbox Code Playgroud)

逻辑从这里开始:如何立即关闭Node.js http(s)服务器?


小智 13

这个api在socket.io v1.1.x中再次发生了变化,它现在是:

io.close()
Run Code Online (Sandbox Code Playgroud)