Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使node.js TCP连接自动重新连接?_Node.js_Tcp_Client Server - Fatal编程技术网

如何使node.js TCP连接自动重新连接?

如何使node.js TCP连接自动重新连接?,node.js,tcp,client-server,Node.js,Tcp,Client Server,我在node.js中编写了一个TCP客户端和服务器。我不知道如何使客户端在由于任何原因断开连接时重新连接。我知道我必须处理'close'事件,但这是一个只有在连接正常关闭时才会触发的事件。由于网络问题,连接刚刚结束,我不知道如何处理网络错误 以下是我到目前为止的代码: function connect () { client = new net.Socket(); client.connect(config.port, config.host, function () { con

我在node.js中编写了一个TCP客户端和服务器。我不知道如何使客户端在由于任何原因断开连接时重新连接。我知道我必须处理
'close'
事件,但这是一个只有在连接正常关闭时才会触发的事件。由于网络问题,连接刚刚结束,我不知道如何处理网络错误

以下是我到目前为止的代码:

function connect () {
  client = new net.Socket();
  client.connect(config.port, config.host, function () {
    console.log('connected to server');
  });

  client.on('close', function () {
    console.log('dis-connected from server');
    connect();
  });

  client.on('error', ...); // what do I do with this?
  client.on('timeout', ...); // what is this event? I don't understand
}

谁能解释一下在
错误
超时
情况下我该怎么做?如何知道网络已断开连接并重新连接?

您可能只需将
错误事件处理程序保留为no op/empty函数,除非您还想记录错误或其他有用的内容。TCP套接字的
close
事件始终会发出,即使在
error
之后也是如此,因此您可以忽略它

此外,事件处理程序还被传递一个布尔
had_error
参数,该参数指示套接字关闭是否由于错误而不是正常的连接断开


该事件用于检测两个端点之间的通信量丢失(使用的超时设置为。

您可以使用该插件或检查其工作方式,因此我认为我应该只处理“关闭”事件,对吗?如我所述处理
close
,否则在
出错时会出现未捕获的异常(例如EconReset)发射。