如何在Node.JS中捕获TCP套接字传输失败?

时间:2017-04-23 00:18:07

标签: node.js networking tcp

当我将数据写入Node中的TCP套接字时,该套接字未关闭但另一端的客户端不再连接(例如网络故障),我怎么知道?

在这种情况下,套接字的错误事件不会为我启动。如果我是对的,TCP会放弃发送数据,如果没有来自另一方的ACK数据包,不是吗?或者我误解了什么?

2 个答案:

答案 0 :(得分:0)

正如Nodejs Net documentation中所述。 套接字事件包括closeconnectdatadrainenderrorlookup和{{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
  }
});