0

CometDを使用するJavaWebアプリケーションの場合、メッセージがbayeuxによって処理されるたびに、チャネルのすべてのサブスクライバーにメッセージを公開するにはどうすればよいですか?

テストには、を使用しserverSession.deliver(serverSession, "/test-channel", map, null);ました。

その結果、私のJavascriptクライアントは正常にサブスクライブしますが、10回の試行のうち1回だけメッセージを受信します。したがって、90%の確率で、ブラウザがメッセージを受信することはありませんが、バイユーのログ(レベル3)は、メッセージが毎回正しいチャネルに送信されていることを示しています。

何らかの形式のクライアントセッションを使用する必要がありますか?CometDのドキュメントは少し不明瞭なようです。

4

1 に答える 1

2

を使用localSessionすることが答えのようです。私はこれを修正するために実装しました:

ClientSessionChannel channel = localSession.getChannel(getClientChannel());
channel.publish(map);

これで、クライアントはすべてのメッセージを受信して​​います。

于 2011-07-08T19:37:58.003 に答える