我在Google和SO上找不到明确的答案。
我知道net.Server
实例有一个close
方法,可以阻止更多客户端连接。但它不会断开已连接的客户端。我该如何实现这一点?
我知道可以通过Http实现这一点,我想知道是否在Tcp中也是相同的,还是不同的。
对于Http,我会做类似于以下的操作:
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();
});
Tcp是否也相同?还是我需要采取不同的措施?
server.close()
之前,保持已连接客户端的列表,并关闭所有活动的客户端,以进行硬关闭(但如果真的需要“硬”关闭,只执行process.exit()
可能更好)。 - Andrey Sidorov