次のコードでsocket.io接続を作成します
var socket = new io.connect('http://localhost:8181', {
'reconnect': true,
'reconnection delay': 500,
'max reconnection attempts': 50
});
しかし、私がサーバーを殺したとき CTRL+C 再起動すると、再接続は行われません。しかし、クライアント側で切断イベントが発生しました。その理由は何でしょうか?
これは古い質問ですが、socket.io(1.x)で再接続を構成する方法を探している私のような他の人にとって、ここに正しい構文があります:
var socket = new io.connect('http://localhost:8181', {
'reconnection': true,
'reconnectionDelay': 1000,
'reconnectionDelayMax' : 5000,
'reconnectionAttempts': 5
});
これは古い質問であることに気づきましたが、ソケットioの再接続に問題があり、この投稿が検索結果の上位にあることがわかりました。次のコードを使用して、発生しているイベントを正確にデバッグしてみてください。
# coffeescript. compile if you're writing javascript, obviously.
socket.on 'connect',-> console.log 'connected'
socket.on 'reconnect',-> console.log 'reconnect'
socket.on 'connecting',-> console.log 'connecting'
socket.on 'reconnecting',-> console.log 'reconnecting'
socket.on 'connect_failed',-> console.log 'connect failed'
socket.on 'reconnect_failed',-> console.log 'reconnect failed'
socket.on 'close',-> console.log 'close'
socket.on 'disconnect',-> console.log 'disconnect'
これにより、クライアントソケットの状態をさらに詳しく知ることができます。
また、ウェブインスペクターの[ネットワーク]タブを見て、XHRリクエストがフォールバックとして発生しているかどうかを確認してください。最後に、Webコンソールでio.socketsと入力して展開し、実際に再接続を試みているかどうかを確認します。
Reconnect_failedが起動せず、再接続タリーがリセットされないという問題が発生しました。以下はgithub上のこれらの問題の議論へのリンクです。
これは古い質問ですが、v1.4.5を使用するときに(別の理由で)同じ質問がありました。私のチャットルームアプリは美しく機能しましたが、Ctrl+C
ターミナルでは、ブラウザはループし続け、シャットダウンするまで数秒ごとにERR_CONNECTION_REFUSEDを報告しました。
以前の回答を少し変更するだけで解決策が得られました。
V1.4.5の場合、クライアントのjsファイルにある「var socket」の元のコードは次のとおりです。
var socket = io();
そしてここに解決策があります:
var socket = io({
'reconnection': true,
'reconnectionDelay': 1000,
'reconnectionDelayMax' : 5000,
'reconnectionAttempts': 5
});
もちろん、必要に応じて値を変更することもできますが、重要な点は、これにより、終わりのない再接続要求が強制終了されたことです。
再接続の遅延が小さすぎると500ミリ秒増加します。その上、50回の再試行は500 * 50 = 25000ミリ秒、つまり25秒です。それでも解決しない場合は、クライアント側のエラーイベントにタイムアウトを設定して、ソケットオブジェクトを再作成します(エラー後、接続の作成を再試行して遅延が発生します)。