問題タブ [spring-websocket]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - spring websockets: オフライン ユーザーにメッセージを送信する - メッセージ ブローカーにエンキューされていないメッセージ
メッセージブローカー(activemq)を使用して、春とウェブソケットを備えたウェブアプリを持っています。
ここに私の設定クラスがあります:
ユーザー名「StanTheMan」にメッセージを常にプッシュするスケジュールされたタスクがあります。
現在、ユーザーが Websocket 経由でサーバーに接続されていない場合、そのユーザーへのすべてのメッセージはキューに入れられず、単純に破棄されます。彼が接続するたびに、新しいメッセージがキューに入れられます。何らかの方法でメッセージをオフライン ユーザーに「convertAndSendToUser」することはできますか? オフライン ユーザーが再度接続し、有効期限が切れていないときに後でプッシュできるように、有効期限が切れたメッセージをキューに入れたいと考えています。
どうすればそれを達成できますか? 明らかに、実際のメッセージブローカー (activemq) を使用すると、それを達成するのに役立つはずですが、どのように?
ありがとう!
java - spring websockets - オフラインのユーザーにメッセージを送信できますか?
私のデータベースには多くのユーザーがいます。接続されていなくても、websocket 経由でメッセージを送信できるようにしたいと考えています。オフラインのユーザーにメッセージを送信するときはいつでも、彼が接続するまでメッセージをキューに入れておき、その後すべてのメッセージが彼にプッシュされるようにしたいと考えています。
そんな感じ:
その機能は可能ですか?
メッセージ バスとして activeMQ を使用していることに注意してください。(メッセージブローカー)。上記で説明している機能は、jms\message キューの標準です。
編集:私はactivemqでアプリを作成しました - オフラインのユーザーにメッセージを送信すると、メッセージはエンキューされず、失われます。何か案は?
ありがとう!
java - Spring 4 Websocket のサポートと、すべてのトピックにサブスクライブするクライアント
私は現在、Spring の新しい Websocket サポートを使用して、Netty 上に構築されたカスタム サーバーを置き換えることを検討しています。私が問題を抱えていることの 1 つは、(セッションに基づいて) 1 人のユーザーにのみメッセージを送信するように春を得ることです。
このテスト中に、Websocket クライアントが認証されると、「/queue/ /」にサブスクライブして、他のユーザーへのメッセージを取得できるようにも見えます。Spring サーバーに接続するために、Eclipse RCP アプリで Spring Websocket クライアントを使用しています。
ここに何かが欠けているのでしょうか、それとも意図しない方法で使用しようとしているだけですか?
spring - Spring : @Controller および Websocket を介してトリガーされる @Scheduled タスク
@Scheduled
Websocket を介して毎秒クライアントにデータを送信するタスクがあります。
クライアントが要求したときにのみ、スケジュールされたタスクの実行を開始する必要があります。
代わりに、サーバーの起動時にタスクが開始されます。それは私が望む動作ではありません。
現在、 SchedulingConfigurer で宣言されているスケジュールされたタスクの Bean があります。
これが私のスプリングコントローラーコードです:
@Scheduled
アノテーションを使用してそれを行うことはできず、TaskScheduler
インターフェイスを使用する必要がありますか?
angularjs - テンプレート ビューが更新されていない -> マウス スクロールまたはクリア入力が必要
このチュートリアルhttp://g00glen00b.be/spring-websockets-angular/の下で、stomp-websockets、sock.js で angular.js を使用しています。Websocket からメッセージを受信していますが、Websocket からのメッセージが到着した後、テンプレート ビューが更新されません。テンプレート ビューを更新するには、入力ボックスをクリアするか、マウスでスクロールする必要があります。
ember.js - Spring バックエンドからのドメイン エンティティのリアルタイム更新を Web アプリに提供する
サーバー側では Spring 4 を使用しています。ブラウザ側では Ember.js を使用しています。
私のアプリケーションには、 や などのエンティティ クラスがPerson
ありProduct
ます。これらのエンティティは、サーバーとブラウザーの両方で使用されており、同じようにモデル化されています。例えば:
サーバーとブラウザの間でエンティティの同期を維持する必要があります。したがって、たとえば、Person
のfirstName
プロパティがサーバー側で変更されると、この変更は関連するすべてのブラウザにリアルタイムでプッシュされます。
Spring の WebSocket サポートを調査し、 Spring の「Hello WebSocket」の例に慣れた後、このテクノロジーを使用することが私の要件に適したアプローチであると確信しました。
WebSocket/STOMP は非常に低レベルであるため、このテクノロジの上に構築され、ブラウザー (ここでのエンティティの役割はobserver ) とサーバー (エンティティの役割)の間でオブザーバー パターンのような動作を提供するソリューションを探しています。ここではsubject/observableになります)。
この「キープ・エンティティー・イン・シンク」の課題に対する既存の解決策を見つけることができなかったので (Spring 内の解決策でも、サード・パーティー・ライブラリーの解決策でもありません)、独自の解決策を構築したいと考えていますが、設計はすでに興味深い問題を提起しています。 、 そのような:
- プロトコルはどのように見えるべきですか? 変更が発生したら、サーバーはエンティティ タイプとその ID のみを含む最小限のフレームを送信する必要がありますか? (たとえば
Person
、ID "3" を持つ のプロパティが変更されると{"type": "Person", "id": "3"}
、関心のあるすべてのクライアントに送信されます) - サブスクライブできるエンティティの数に実際の制限はありますか? セッション中、1 つのブラウザが何百もの と接触することがあり
Product
ます。
Spring ベースのサーバーのエンティティと JavaScript クライアントのプロキシ エンティティ (必ずしも Ember.js である必要はありません) との同期を正常に維持することが証明されているソリューションを知りたいと思っています。
spring - Spring WebSocket @MessageMapping/@SubscribeMapping のカスタム JSON シリアル化の使用
これはうまくいきます
私の Spring ベースのアプリケーションでは、HTTP ベースの REST エンドポイントをセットアップしました。このエンドポイントは JSON を「話します」:
これらの JSON ペイロードは通常とは異なる命名規則に従う必要があるため、シリアル化されたプロパティ名をカスタマイズするために@JsonRootName
やなどの注釈を使用しました。@JsonProperty
このカスタム JSON メタデータを使用/users/123
して、HTTP 経由でクエリを実行すると、次の JSON ペイロードが返されます。
以下は期待どおりに動作しません
現在、Spring の WebSocket サポートをいじっています。STOMP ベースのREST エンドポイントを作成したいと考えています。したがって、私はStompRestController
このようなものを作成しました:
@SubscribeMapping
/@MessageMapping
が と同じ JSON シリアル化動作に従うことを期待していたでしょう@RequestMapping
。しかし、そうではありません。代わりに、この WebSocket/STOMP エンドポイントにクエリを実行すると、 @SubscribeMapping
/@MessageMapping
アノテーションが付けられたメソッドは、「通常の」Jackson シリアライゼーション ルールに対応するペイロード/ボディを持つ STOMP メッセージをクライアントに送信します。
したがって:
@SubscribeMapping
/注釈付きの@MessageMapping
メソッド@JsonXXX
が戻り値のカスタム注釈に従うようにするにはどうすればよいですか?@JsonXXX
このような戻り値のシリアル化を行う別の方法はありますか?