Socket.io - Закрыть сервер

У меня есть сервер socket.io в моем приложении, слушая порт 5759.

В какой-то момент в моем коде мне нужно отключить сервер ТАК НЕ СЛУШАТЬ ЛЮБОЙ.

Как я могу это сделать?

Socket.io не прослушивает HTTP-сервер.

Ответ 1

У вас есть сервер:

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

Логика взята отсюда: Как отключить сервер Node.js http? s) немедленно?

Ответ 2

Этот api снова изменился в socket.io v1.1.x это теперь:

io.close()

Ответ 3

API изменился. Чтобы прекратить прием входящих соединений, вы должны запустить:

io.httpServer.close();