我有一个到套接字的网络客户端连接(使用net.createConnection(端口,主机)。这很好。
但是,有时服务器可能会断开连接,我希望网络连接在服务器备份和运行时自动重新连接
我可以捕获on('end')事件以捕获初始断开连接,并尝试重新连接。
但是,我如何检查客户端是否已连接,因为我想在退避策略上每n毫秒重试一次
答案 0 :(得分:5)
在end
处理程序中,设置将重试连接的超时,并设置一个取消超时的connect
处理程序。
答案 1 :(得分: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关闭,服务器端崩溃或电源故障等)