問題タブ [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.

0 投票する
2 に答える
3438 参照

java - spring websockets: オフライン ユーザーにメッセージを送信する - メッセージ ブローカーにエンキューされていないメッセージ

メッセージブローカー(activemq)を使用して、春とウェブソケットを備えたウェブアプリを持っています。

ここに私の設定クラスがあります:

ユーザー名「StanTheMan」にメッセージを常にプッシュするスケジュールされたタスクがあります。

現在、ユーザーが Websocket 経由でサーバーに接続されていない場合、そのユーザーへのすべてのメッセージはキューに入れられず、単純に破棄されます。彼が接続するたびに、新しいメッセージキューに入れられます。何らかの方法でメッセージをオフライン ユーザーに「convertAndSendToUser」することはできますか? オフライン ユーザーが再度接続し、有効期限が切れていないときに後でプッシュできるように、有効期限が切れたメッセージをキューに入れたいと考えています。

どうすればそれを達成できますか? 明らかに、実際のメッセージブローカー (activemq) を使用すると、それを達成するのに役立つはずですが、どのように?

ありがとう!

0 投票する
1 に答える
1213 参照

java - spring websockets - オフラインのユーザーにメッセージを送信できますか?

私のデータベースには多くのユーザーがいます。接続されていなくても、websocket 経由でメッセージを送信できるようにしたいと考えています。オフラインのユーザーにメッセージを送信するときはいつでも、彼が接続するまでメッセージをキューに入れておき、その後すべてのメッセージが彼にプッシュされるようにしたいと考えています。

そんな感じ:

その機能は可能ですか?

メッセージ バスとして activeMQ を使用していることに注意してください。(メッセージブローカー)。上記で説明している機能は、jms\message キューの標準です。

編集:私はactivemqでアプリを作成しました - オフラインのユーザーにメッセージを送信すると、メッセージはエンキューされず、失われます。何か案は?

ありがとう!

0 投票する
1 に答える
901 参照

java - Spring 4 Websocket のサポートと、すべてのトピックにサブスクライブするクライアント

私は現在、Spring の新しい Websocket サポートを使用して、Netty 上に構築されたカスタム サーバーを置き換えることを検討しています。私が問題を抱えていることの 1 つは、(セッションに基づいて) 1 人のユーザーにのみメッセージを送信するように春を得ることです。

このテスト中に、Websocket クライアントが認証されると、「/queue/ /」にサブスクライブして、他のユーザーへのメッセージを取得できるようにも見えます。Spring サーバーに接続するために、Eclipse RCP アプリで Spring Websocket クライアントを使用しています。

ここに何かが欠けているのでしょうか、それとも意図しない方法で使用しようとしているだけですか?

0 投票する
2 に答える
2445 参照

spring - Spring : @Controller および Websocket を介してトリガーされる @Scheduled タスク

@ScheduledWebsocket を介して毎秒クライアントにデータを送信するタスクがあります。

クライアントが要求したときにのみ、スケジュールされたタスクの実行を開始する必要があります。

代わりに、サーバーの起動時にタスクが開始されます。それは私が望む動作ではありません。

現在、 SchedulingConfigurer で宣言されているスケジュールされたタスクの Bean があります。

これが私のスプリングコントローラーコードです:

@Scheduledアノテーションを使用してそれを行うことはできず、TaskSchedulerインターフェイスを使用する必要がありますか?

0 投票する
1 に答える
275 参照

angularjs - テンプレート ビューが更新されていない -> マウス スクロールまたはクリア入力が必要

このチュートリアルhttp://g00glen00b.be/spring-websockets-angular/の下で、stomp-websockets、sock.js で angular.js を使用しています。Websocket からメッセージを受信して​​いますが、Websocket からのメッセージが到着した後、テンプレート ビューが更新されません。テンプレート ビューを更新するには、入力ボックスをクリアするか、マウスでスクロールする必要があります。

0 投票する
1 に答える
1421 参照

ember.js - Spring バックエンドからのドメイン エンティティのリアルタイム更新を Web アプリに提供する

サーバー側では Spring 4 を使用しています。ブラウザ側では Ember.js を使用しています。

私のアプリケーションには、 や などのエンティティ クラスがPersonありProductます。これらのエンティティは、サーバーとブラウザーの両方で使用されており、同じようにモデル化されています。例えば:

サーバーとブラウザの間でエンティティの同期を維持する必要があります。したがって、たとえば、PersonfirstNameプロパティがサーバー側で変更されると、この変更は関連するすべてのブラウザにリアルタイムでプッシュされます。

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 である必要はありません) との同期を正常に維持することが証明されているソリューションを知りたいと思っています。

0 投票する
0 に答える
4102 参照

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このような戻り値のシリアル化を行う別の方法はありますか?