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

时间:2014-10-09 01:20:38

标签: node.js tcp client-server

我在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
}

任何人都可以解释我在errortimeout案件中应该做些什么吗?我怎么知道网络断开连接并重新连接?

1 个答案:

答案 0 :(得分:1)

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

此外,close事件处理程序传递一个布尔had_error参数,该参数指示套接字关闭是由于错误而不是正常连接拆除。

timeout事件用于检测两个端点之间的流量丢失(使用的超时时间设置为socket.setTimeout()