2013-04-14 7 views
10

Ich habe einen socket.io Server in meiner app, auf Port lauscht 5759.Socket.io - Close Server

An einem gewissen Punkt in meinem Code Ich brauche den Server Shutdown SO HÖRT es nicht mehr.

Wie kann ich das erreichen?

Socket.io hört auf einem HTTP-Server nicht zu.

Antwort

14

Sie haben einen Server:

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

eingehende Verbindungen

io.server.close(); 

HINWEIS recieving zu beenden: Dies wird nicht bestehende Verbindungen schließen, die für Timeout wartet, bevor sie geschlossen werden. Um sie sofort zu schließen, stellen Sie zuerst eine Liste der angeschlossenen Steckdosen

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

Dann werden alle bestehenden Verbindungen schließen gepflückt

socketlist.forEach(function(socket) { 
    socket.destroy(); 
}); 

Logic up von hier: How do I shutdown a Node.js http(s) server immediately?

+0

Verwendung 'io.close()' zu Hören Sie auf, eingehende Verbindungen zu empfangen. API wurde irgendwo aktualisiert ~ 2015 Q2 –

+0

'io.close()' schließt jedoch keine bestehenden Verbindungen – rocketspacer

2

Die API verändert hat. So stoppen Sie eingehende Verbindungen erhalten, sollten Sie laufen:

io.httpServer.close(); 
10

Diese api wieder in Socket.io V1.1.x geändert hat es ist jetzt:

io.close() 
Verwandte Themen