当我将数据写入Node中的TCP套接字时,该套接字未关闭但另一端的客户端不再连接(例如网络故障),我怎么知道?
在这种情况下,套接字的错误事件不会为我启动。如果我是对的,TCP会放弃发送数据,如果没有来自另一方的ACK数据包,不是吗?或者我误解了什么?
答案 0 :(得分:0)
正如Nodejs Net documentation中所述。
套接字事件包括close
,connect
,data
,drain
,end
,error
,lookup
和{{1} }。
由于您没有收到timeout
事件,请尝试侦听套接字另一端发送error
数据包时发出的end
事件。
FIN
或者,如果您期望网络出现故障或其他不可预测的网络边缘情况;你可以随时设置超时并以这种方式处理。
socket.on('end', () => console.log('socket has ended'))
答案 1 :(得分:0)
close
event侦听器将传递一个hadError
arg,该参数指示套接字是否由于传输错误而关闭。例如:
socket.on('close', hadError => {
if (hadError) {
// Handle transmission error here
}
});