6

我有一个到套接字的网络客户端连接(使用 net.createConnection(port,host)。这工作正常。

但是,有时服务器可能会断开连接,我希望网络连接在服务器备份和运行时自动重新连接

我可以捕获 on('end') 事件以捕获初始断开连接,并尝试重新连接。

但是,我如何检查客户端是否已连接,因为我想在退避策略上每 n 毫秒重试一次

4

2 回答 2

5

在您的处理程序中,设置将重试连接的超时,并设置将取消超时end的一次性处理程序。connect

于 2012-08-30T02:21:14.690 回答
0

这是另一种对我有用的方法。

if ( !client.readable )
    client.connect(PORT,HOST);
else
    logger.debug('Attempt to reconnect on an active connection. Ignored.');

如果连接处于活动状态,则使用 client.readable 将立即返回一个值。如果没有,那么只需重新连接。使用 client.writable 失败。

我发现这种方法更强大,因为有时 END 或 CLOSE 事件不会发生(例如:VPN 关闭、服务器端崩溃或电源故障等)

于 2015-12-25T16:33:43.513 回答