我在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
}
任何人都可以解释我在error
和timeout
案件中应该做些什么吗?我怎么知道网络断开连接并重新连接?
答案 0 :(得分:1)
您可以将error
事件处理程序保留为no-op / empty函数,除非您还要记录错误或有用的内容。即使在close
之后,也始终会发出TCP套接字的error
事件,因此您可以忽略它。
此外,close
事件处理程序传递一个布尔had_error
参数,该参数指示套接字关闭是由于错误而不是正常连接拆除。
timeout
事件用于检测两个端点之间的流量丢失(使用的超时时间设置为socket.setTimeout()
。