Non sono riuscito a trovare una risposta chiara su Google o SO.Come chiudere correttamente un server TCP Node.js?
Conosco un'istanza net.Server
con un metodo close
che non consente l'ingresso di altri client. Ma non disconnette i client già connessi. Come posso ottenerlo?
So come si può fare con Http, suppongo che sto chiedendo se è lo stesso con Tcp o se è diverso.
con HTTP, mi piacerebbe fare qualcosa di simile:
var http = require("http");
var clients = [];
var server = http.createServer(function(request, response) {
response.writeHead(200, {"Content-Type": "text/plain"});
response.end("You sent a request.");
});
server.on("connection", function(socket) {
socket.write("You connected.");
clients.push(socket);
});
// .. later when I want to close
server.close();
clients.forEach(function(client) {
client.destroy();
});
E 'lo stesso per il protocollo TCP? O dovrei fare qualcosa di diverso?
sì, lo stesso. Mantieni la lista dei client collegati e chiudi tutti attivi prima di fare 'server.close()' se hai bisogno di un arresto forzato (ma se è davvero "difficile" fai semplicemente 'process.exit()' potrebbe essere meglio) –
Non dimenticare di rimuovi i socket quando si disconnettono (ad es. l'evento 'close' del socket), altrimenti finirai con un array di socket sempre crescente contenente socket potenzialmente morti. – mscdex