1

これがシナリオです。node.js+socket.ioアプリケーションとは別のサーバーでPHPによって提供されるクライアント側アプリケーションがあります。サーバーから送信されたブロードキャストを接続して受信できます。接続が切断されると、アプリケーションはデータベースのポーリングにフォールバックします(を使用setInterval())。5回のポーリングごとに再接続を試み、正常に再接続してメッセージの受信を継続できます。

ユーザーがページをロードし、ノードサーバーに到達できない場合(テストのためにオフにしました)、サーバーの電源をオンにし、5回目のポーリングで、を使用してサーバーに正常に接続すると、問題が発生しますsocket.socket.reconnect();。ただし、サーバーがメッセージをブロードキャストするときは常に、イベントは発生しません。これは、電話でテストする場合には発生しないことに注意してください(別のソケット方式にフォールバックします)

`socket.on('message'、function(){})`のsocket.ioの問題でここにある質問をすでに見ましたが、ソケットは以前に接続されていなかったので、接続できなかったと思いますセッション?

編集:私はに変更socket.socket.reconnect()socket.socket.connect()、それは問題を修正しました。誰かがこれがうまくいく理由を説明できたら私は知りたいです。サーバーが実際に再接続していないのでわかりますが、詳細を知りたいです。

ありがとう。

4

1 に答える 1

1

よく、あなたはおそらくこれの理由を知っています。サーバーが再接続していません。実際に接続しています。socket.io に再接続するように指示すると、以前の接続ハンドルが検索され、そこで問題が発生します。

于 2012-09-21T11:29:56.507 に答える