2013-04-14 3 views
10

У меня есть сервер Socket.io в мое приложение, прослушивает порт 5759.Socket.io - Закрыть Сервер

В какой-то момент в моем коде мне нужно закрыть сервер ПОЭТОМУ НЕ СЛУШАЯ ANYMORE.

Как это сделать?

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

ответ

14

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

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?

+0

использование 'io.close()' в прекратить прием входящих соединений. API был обновлен где-то ~ 2015 Q2 –

+0

'io.close()' не закрывает существующие соединения, хотя – rocketspacer

2

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

io.httpServer.close(); 
10

Это апи изменилось снова в Socket.io v1.1.x сейчас:

io.close() 
Смежные вопросы