2016-04-03 20 views
0

私はnet.connectを使用してソケット接続を行いますが、接続が失敗したときにどのように検出するのだろうか?ノードjsで接続の検出に失敗しましたか?

私がこのコードの断片を実行すると、接続が失敗した、と私はいくつかのデータを書き込む際に、エラーが発生するので、それは確かに失敗し

//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

'close'と' timeout'イベントを試してみませんか? –

答えて

0

最も簡単で最も便利な方法は、両側が送信する「ピンポン」チェックを実装することですある種の「ping」要求が頻繁に発生します。 nの未処理のping要求に一定時間が経過しても応答がない場合は、接続が切断されたとみなします。この種のアルゴリズムは、基本的にOpenSSHが使用するものです(デフォルトでは有効になっていませんが)。