У меня есть сервер Socket.io в мое приложение, прослушивает порт 5759.Socket.io - Закрыть Сервер
В какой-то момент в моем коде мне нужно закрыть сервер ПОЭТОМУ НЕ СЛУШАЯ ANYMORE.
Как это сделать?
Socket.io не прослушивает HTTP-сервер.
У меня есть сервер Socket.io в мое приложение, прослушивает порт 5759.Socket.io - Закрыть Сервер
В какой-то момент в моем коде мне нужно закрыть сервер ПОЭТОМУ НЕ СЛУШАЯ ANYMORE.
Как это сделать?
Socket.io не прослушивает HTTP-сервер.
У вас есть сервер:
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();
});
Logic подобрали здесь: How do I shutdown a Node.js http(s) server immediately?
API-интерфейс изменился. Чтобы прекратить прием входящих соединений вы должны выполнить:
io.httpServer.close();
Это апи изменилось снова в Socket.io v1.1.x сейчас:
io.close()
использование 'io.close()' в прекратить прием входящих соединений. API был обновлен где-то ~ 2015 Q2 –
'io.close()' не закрывает существующие соединения, хотя – rocketspacer