6

ソケットへのネットクライアント接続があります(net.createConnection(port、host)を使用)。これは正常に機能します。

ただし、サーバーが接続を切断する可能性があるため、サーバーがバックアップされて実行されているときにネット接続を自動的に再接続したい場合があります

on('end')イベントをトラップして最初の切断をキャッチし、再接続を試みることができます。

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

4

2 に答える 2

5

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

于 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 に答える