2011-12-17 13 views
7

ユーザがsocket.ioで自分のノードサーバに接続するページを持っていますが、サーバに接続しているソケットsocket.ioを1つだけ開くことができます(アカウントIDを渡して配列に格納する)これは時間の99%を正常に動作します。問題は、ユーザーが接続を切断するとサーバー側の切断イベントが何らかの理由で起動しないことがあるため、クライアントのアレイからアカウントをクリアすることができず、ロックアウトされることになります。ソケットがまだ接続されているかどうかを確認するには?

古いソケット接続(私のIDはありますか)がまだ有効かどうかを確認する方法はありますか? (そうでない場合は、古い接続をクリアして再度接続できるようにしてください)

+0

あなたはこのマットの解決策を見つけましたか? – SatheeshJM

答えて

4

ハートビートがtrue(デフォルト)に設定されていることを確認してください。タイムアウトが過ぎると自動的に切断されます。しかし、ハートビートが動作しないというバグレポートがありました。 Socket.IOの最新バージョンを使用していることを確認してください(私はバグの状態がわかりません)。

あなたはまだ、ユーザが再接続しようとするときは、古い接続にPINGを送ることができ、助けが必要な場合:

がサーバーから「ピング」を放ち、および場合は、クライアントから「ピンポン」で返信接続はまだ生きています。 pingがタイムアウトすると(たとえば20秒後)、接続を手動で解除して、ユーザーが再接続できるようにします。 pingを使用して、元のクライアントに別のクライアントが接続しようとしていることを通知し、その効果を得るためにUIを上げることができます。

関連する問題