サーバーからのアクションを待たずに、接続されているすべてのクライアントにメッセージを送信することは可能ですか? 説明させてください:-)ドキュメント/例を読んでいますが、私のニーズを満たすものは何も見つかりませんでした:フローは常に同じです。クライアントが接続し (例: Rest API への GET 呼び出し)、接続が中断され、新しい API 呼び出し (例: POST 呼び出し) が受信されるまで、サーバーは単に待機します (または、少なくともこれは私が理解していることです)。私の使用例はかなり異なります。新しいデータが利用可能になったら、サーバーに「通知」を送信してもらいたいのです。これは私のユースケースです(かなり単純化されています):
- クライアント A がサーバーに接続する
- 現在、新しいデータが利用できないため、接続は中断されています
- サーバーは、新しいデータが外部ソースから利用可能になったことを通知され、それをクライアント A にブロードキャストします。
- 手順 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」に変更すると、エラーが表示されないことに気付きました。サーバーは最終的にタフなデータを送信します:)