0

ログインし、サーバーによって生成されたメッセージを受信するユーザーにとって、能力を達成するための最良のメカニズムは何でしょうか。サーバーがユーザーに情報を送信する方法がないため、新しいメッセージを配信する場合、ユーザーブラウザーは特定の間隔でポーリングし、応答として新しいメッセージを受信する必要があります。さらに、サーバーの方法が必要です。すでにユーザーに配信されているメッセージを送信しないようにします。パブリックチャットメカニズムのようなもので接続を確立することもできますが、必要なのは、リアルタイムに近いメッセージ遅延と、約100人のユーザーを同時に処理できるため、トラフィックを最小限に抑えることです。追記:データは、ユーザーがオンラインの場合にのみ必要であり、他のユーザーが「履歴」を読み取るためにそのデータをサーバーに保存する必要はありません。

私の考えでは、これを実現する1つの方法があります。サーバーがすべてのメッセージを配置するグローバルな「メッセージボックス」です。ユーザーブラウザは常にサーバーをポーリングして、最後に受信したメッセージIDがメッセージボックスの最後のメッセージIDと等しいかどうかを確認します。

問題は、これが正しい方法であるか、またはリアルタイムデータの必要性がどこにでもあるため、そのようなタスクに別の方法があるかどうかです:センサーデータ、マルチプレイヤーゲーム、チャット、株式市場など...

4

3 に答える 3

1

より良い戦略を推し進めていませんか?サーバーとブラウザーの間でtcp接続を開いたままにし、新しい情報が利用可能になったときにブラウザーに変更をストリーミングします。

html5WebSocketを見てください。(これはまさにこれを行います)

こちらがデモです

于 2011-05-05T10:49:26.557 に答える
1

コメットを見たことがありますか?

Comet は、ブラウザーが明示的に要求しなくても、長時間保持された HTTP 要求によって Web サーバーがブラウザーにデータをプッシュできるようにする Web アプリケーション モデルです。

stackoverflow を検索すると、その使用に関する情報がたくさんあります。

于 2011-05-05T11:11:25.497 に答える