如何检测节点js中的连接失败?

时间:2016-04-03 14:09:51

标签: node.js

我使用net.connect建立套接字连接,我想知道在连接失败时如何检测它?

似乎这不起作用

 //this will return a net.Socket and automatically connect
 var client = net.connect({port:22000, host:'10.123.9.163'});

 //doesn't trigger a error event even if connection fails
 client.on('error', (err)=>{console.log('something wrong')});

 //now an error event is emitted reasonably
 client.write('hello');

当我运行这段代码时,连接应该失败,它确实失败了,因为当我写一些数据时,会发生错误。但是,我无法检测到连接失败。我怎么能这样做?

=====准备关闭======

该死的,我想我犯了一个错误。实际上连接成功但是由于一些安全策略,服务器关闭连接,我通过telnet发现。尝试其他应该肯定失败的端口后,会发出错误事件,一切都按预期正常。所以,我会在误导其他人的情况下关闭这个问题,也谢谢你们帮助我:)

1 个答案:

答案 0 :(得分:0)

最简单,最便携的方法是简单地实施“乒乓”检查,双方都经常发送某种“ping”请求。如果n未完成的ping请求在一段时间后未得到答复,则认为连接已停止。这种算法基本上就是OpenSSH使用的算法(尽管默认情况下它没有启用)。