7

サーバーからのアクションを待たずに、接続されているすべてのクライアントにメッセージを送信することは可能ですか? 説明させてください:-)ドキュメント/例を読んでいますが、私のニーズを満たすものは何も見つかりませんでした:フローは常に同じです。クライアントが接続し (例: Rest API への GET 呼び出し)、接続が中断され、新しい API 呼び出し (例: POST 呼び出し) が受信されるまで、サーバーは単に待機します (または、少なくともこれは私が理解していることです)。私の使用例はかなり異なります。新しいデータが利用可能になったら、サーバーに「通知」を送信してもらいたいのです。これは私のユースケースです(かなり単純化されています):

  1. クライアント A がサーバーに接続する
  2. 現在、新しいデータが利用できないため、接続は中断されています
  3. サーバーは、新しいデータが外部ソースから利用可能になったことを通知され、それをクライアント A にブロードキャストします。
  4. 手順 2 に進みます

これまでに達成したことは、接続を正常に確立することです。次のステップは、このサーバーの問題を解決することです。このテクノロジーは私にとってまったく新しいものであると言わざるを得ないため、何かがどのように機能するかを誤解している可能性があります. その場合は、お知らせください。

これは私のスタックです:

  • 春の 3.2.0 リリース
  • ジャージー 1.8
  • アトモスフィア ジャージ 1.0.13
  • トムキャット 7.0.40

よろしくお願いします!

更新:これに従った後この警告が表示されますが、これを取り除く方法がわかりません:

2013-06-04 09:40:36,284 WARN [org.atmosphere.cpr.AtmosphereFramework] - Failed using comet support: org.atmosphere.container.Tomcat7AsyncSupportWithWebSocket, error: Tomcat failed to detect this is a Comet application because context.xml is missing or the Http11NioProtocol Connector is not enabled.
If that's not the case, you can also remove META-INF/context.xml and WEB-INF/lib/atmosphere-compat-tomcat.jar Is the Nio or Apr Connector enabled?
2013-06-04 09:40:36,285 WARN [org.atmosphere.cpr.AtmosphereFramework] - Using org.atmosphere.container.Tomcat7BIOSupportWithWebSocket

ここにコメントされているアプリの構造に従ったので、これは問題になりません。トランスポートを「ロングポーリング」ではなく「websocket」に変更すると、エラーが表示されないことに気付きました。サーバーは最終的にタフなデータを送信します:)

4

1 に答える 1

0

リンクをたどり、コードを少し修正しました。

ステップ 3 「サーバーは、新しいデータが外部ソースから入手可能であると通知され、それをクライアント A にブロードキャストします」にいる場合、次のような行を記述する必要があります。

BroadcasterFactory.getDefault().lookup("/*").broadcast(response);

最初は ActiveMQ キューから受け取った TextMessage を使用しましたが、このエラーが発生したため、Jackson クラスをオブジェクト応答として使用すると、すべて正常に機能しました。

SEVERE: Java クラス org.apache.activemq.command.ActiveMQTextMessage、および Java タイプ クラス org.apache.activemq.command.ActiveMQTextMessage、および MIME メディア タイプ application/json のメッセージ ボディ ライターが見つかりませんでした 2014 年 6 月 3 日 11:32 :21 AM com.sun.jersey.spi.container.ContainerResponse write SEVERE: MIME メディア タイプと互換性のある登録済みメッセージ本文ライターは次のとおりです: application/json (JSONJAXBElementProvider、JSONArrayProvider、JSONObjectProvider、JSONRootElementProvider、JSONListElementProvider、...)

于 2014-06-03T09:48:54.267 に答える