如果客户端超时或我想因其他原因关闭客户端连接,我想正确关闭套接字连接。通过恰当的意思是:
首先,我考虑使用socket.destroy(),这将确保不再发生I / O活动。当我尝试这个时,我注意到客户端没有得到关于此的通知。很可能是因为它无法知道连接已经关闭,因为没有任何内容发送给客户端,对吗?
因为我认为发出socket.end()并在发出socket.destroy()之后立即发送。这次客户端正常关闭,但它触发了socket.end()事件两次。 为什么会这样?这是迫使套接字关闭的正确方法,还是我遗漏了什么?
服务器代码:
sock.on('destroy', function() {
console.log(sock.remoteAddress + ' has been destroyed');
});
sock.on('end', function() {
console.log(sock.remoteAddress + ' has been half closed');
});
sock.on('timeout', function() {
console.log(sock.remoteAddress + " timed out");
sock.emit('end');
sock.emit('destroy');
});