node.js/socket.io が正常に動作するアプリがあります。クライアントが接続を失うたびに、socket.io の定義済みプロセスを使用して再接続を試みます。
var io = io.connect("/", {
'reconnect': true,
'reconnection delay': 1000,
'reconnection limit': 5000,
'max reconnection attempts': 100
});
これは、Internet Explorer を除くすべてのブラウザーで正常に機能します。問題がどこにあるかを確認するために、すべての再接続イベントにいくつかのアラートを追加しました。
io.on('disconnect', function(){ alert('Disconnected!'); });
io.on('reconnect_failed', function(){ alert('FAILED'); });
io.on('reconnect', function(){ alert('OK'); });
io.on('reconnecting', function( nextRetry ){ alert('Reconnecting...'); });
socket.io サーバーを停止すると (またはクライアント接続が失われると)、すべてのクライアントに「切断時」メッセージが表示されます。それで問題ありません。
IE 以外のクライアント
すべてのクライアントは、接続が復元されるまで 5 秒ごとに「再接続中...」メッセージを受け取り続けます。復元された場合は、最終的な OK メッセージを受け取ります。
IE を使用するクライアント
IE が再接続を試みる (初回) までにサーバーがまだダウンしている場合、クライアントは再接続の試行を続行せず、サーバーが再起動しても、ページが更新されるまでユーザーは接続されません。切断イベント以降、クライアントは「再接続中...」メッセージを 1 回だけ受け取ります。
プラスのテストとして、IE クライアントが再接続を試行する前にサーバーが復元された場合、クライアントは正常に再接続されます。
ここでこの問題を見つけました: https://github.com/LearnBoost/socket.io/issues/1020。しかし、彼らは解決に至りません。私は socket.io.js ファイルを動的に提供するので、彼らが提案する方法で編集することはできません。
ありがとう!