0

Web サーバー、クライアント アプリケーション、およびそれに反応するサーバー アプリケーションがあります。次の図は、構造を説明しています。

ここに画像の説明を入力

システムは次のように機能します。ユーザーがクライアント アプリケーションで何かを変更します。たとえば、本のタイトルを変更します。TCP/IP パッケージをサーバー アプリケーションに送信します。私の期待する結果は、Web ブラウザーに表示される本のタイトルが常に自動的に変更されることです。私が知っているように、Web ブラウザーは Web サーバーに対してロングポーリング要求を保持する必要があります。私の質問は、サーバー アプリケーションが変更について Web サーバーにどのように通知できるかということです。どのような技術を使用すればよいですか?

すべてのアプリケーションは Java で書かれています。

4

2 に答える 2

1

JMS キューを使用することをお勧めします。receive()Web ブラウザーがサーバーに切り替えてロング ポーリングを実行すると、キューに接続してブロッキングメソッドを呼び出すサーブレットに到達する必要があります。クライアント アプリケーションがサーバー アプリに通知するとき。適切なメッセージをキューに送信する必要があります。この時点でブロッキングreceive()が戻り、サーブレットは更新メッセージを Web ブラウザーに送信しreceive()、次の通知が送信されるまでブロッキングに戻ります。

セッション間の不一致を避けるために、動的キューを使用するか、(より良い) 1 つのキューを現在のセッション ID と同じセレクターで使用できます。

メッセージは、JSON を使用してシリアル化された Web クライアントに送信できます。

于 2012-08-26T15:20:40.537 に答える
0

"Comet" は、ロング ポーリングの http 要求用に設計されています。詳細については、http: //en.wikipedia.org/wiki/Comet_(プログラミング) を参照してください。Comet のいくつかの実装があります。たとえば、Nginx + mod_push、サーバー アプリは http を Nginx に送信して msg をプッシュし、nginx によってブラウザに送信します。

于 2012-08-26T15:27:31.363 に答える