3

「ライブユーザー間」チャット(Facebookのような)やリアルタイム通知システムなど、いくつかの機能をWebアプリに追加しようとしています。

このシナリオを考えてみましょう。AとBの2人のユーザーがいます。

AはBにメッセージを送信します。

BとAの間のチャットウィンドウがBのブラウザで開かれている場合は、それを更新して、Bのブラウザに新しいメッセージを表示します。ウィンドウが開いていない場合は、Bのブラウザに通知などを表示する必要があります。

チャットウィンドウとしてPrimeFacesダイアログを使用し、通知を表示するPrimeFaces NotificationBarを使用するには、どうすればよいですか?

PrimeFacesのプッシュはGlassfishで動作しないため、使用できません。

私はICEPushについて知りました。これはこれを行うための良い方法のようですが、「レンダリンググループ」に関することで私はそれを試すことができませんでした。ICEPushがグループについて話している場合、どうすればSINGLEクライアントだけを更新できますか?

クライアントごとに新しいグループを作成する必要がありますか?

次のようなもの:Bには、AがBにメッセージを送信してチャットが開かれたときに更新される「BwithA」グループと、チャットウィンドウが閉じられたときに更新される「notificationsB」グループがありますか?

このようにグループを使用しても、Aは更新する必要があることをBに通知する必要があり、AはBがダイアログまたはnotificationBarを更新する必要があるかどうかを知らないため、その方法を見つけることができません。

説明するのは簡単ではないので、質問が明確であることを願っています|

前もって感謝します :)

4

1 に答える 1

1

プロのJavaプログラマーがあなたの問題をどのように解決するかはわかりませんが、チャットを作成したいときは、標準のPrimefacesリモートコマンドコンポーネントとコールバックパラメーターを使用してチャットを作成し、サーバーからユーザーに新しいメッセージを送信しました。

p:remoteCommandWebページにコンポーネントがあります。このコンポーネントの目的は、アクションリスナーが呼び出されたときに、特定のユーザーから最新のメッセージを取得することです。oncomplete新しいメッセージは、「コールバックパラメータ」を介してサーバーからjavascript関数(コンポーネントのイベントのハンドラ)に渡されます。次に、関数はメッセージがあるかどうかをチェックし、それらをチャットボックスに追加します。

詳細については、「AJAXを使用してJSFチャットを作成する方法」を参照してください。

UPD:上記のソリューションは時代遅れです。ここで、JAX-RSWebサービスまたはWebソケットを使用してチャットを実装します。リアルタイムデータストリーミング用の商用ソリューションもあります:PubNubPusherなど。

于 2012-05-20T10:07:19.263 に答える