1

ロングポーリング AJAX と Apache/PHP を使用して Comet を実装しています。問題は、(私にとっては不明な) 一定期間内に対話がない場合、つまりデータの送受信がなく、しばらくしてからイベントを送信すると、クライアント側のロングポーリング要求が保留状態のままになることです。新しいデータを受け取ります。クライアント側がタイムアウトを受け取って再接続することもありますが、何も受信しないこともあり、既に述べたように、リクエストは保留されたままになります。ここに示されているように実装していますcomet の実装自体とは関係のないいくつかの変更 (つまり、ファイルの代わりにデータベースを使用) があります。サーバー側で新しいイベントを待機するループを使用し、サーバーのタイムアウトにより接続が閉じられたように見えますが、クライアントは再接続のために接続を閉じません。この問題を回避するにはどうすればよいですか? 解決策は、再接続にクライアント側のタイマーを使用しますか?

4

1 に答える 1

1

応答を送信するために 50 秒以上待つ必要はありません。そうしないと、ブラウザーがタイムアウトする可能性があります。基本的に、50 秒後に報告する新しいものがない場合は、とにかく応答を送信します。この空の応答により、クライアントは新しい要求をサーバーに送信し、最初からやり直すようになります。

于 2012-05-11T19:35:33.527 に答える