2012-08-29 2 views
5

を再接続し、私は、サーバーが帰ってきたときに自動的に初期切断をキャッチし、再接続しようとするまで、私は(「終了」)イベントでトラップすることができますnodejsは時々、接続をドロップサーバーの可能性がある、しかし</p> <p>。私はnet.createConnection(ポート、ホスト)を使用してソケット(これは正常に動作するネットのクライアント接続を持っているネット接続

を実行し、再接続するためにネット接続をしたいと思います。

しかし、どのようにバックオフ戦略でnミリ秒ごとに再試行したいので、クライアントが接続しているかどうかを確認できますか

答えて

5

endハンドラでは、接続を再試行するタイムアウトを設定し、タイムアウトをキャンセルする1回のconnectハンドラを設定します。

+0

(例えばなど、サーバー側のVPNシャットダウン、クラッシュや停電)再試行するために接続試行が失敗した場合は検出しますか? – jmls

+0

接続の試行が成功した場合、 'connect'ハンドラはタイムアウトをキャンセルします。これは、タイムアウトコードがまったく実行された場合、接続試行が失敗したか、まだ進行中であることを意味します。タイムアウト値を適切に設定すると(試行が成功しなかった場合、成功しない可能性があるほど十分に長くなる)、試行が失敗したとみなして再試行することができます。 – ebohlman

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イベントが発生しないように、このアプローチは、より堅牢が見つかりました:私は、私はそこまでだと思いますが、どのように

関連する問題