問題タブ [spring-messaging]
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.
spring - SpringのMessageSendingOperationsでプレーンなエスケープされていない文字列を送信するには?
Spring Messaging と Spring Socket を使用して4.0.5.RELEASE
います。
プレーンな String メッセージをブローカーに送信したいと思います。たとえば、サーバー側で次のことを行うと、そのような文字列がエスケープされることがわかります。
サブスクライブした STOMP クライアントは、次のメッセージを受け取ります。
そのため、ペイロードには周囲の引用符とエスケープされた引用符が含まれます。
エスケープされていない「通常の」文字列を送信するにはどうすればよいですか?
spring - 内部で spring-websocket メッセージをサブスクライブする
spring-websocket を使用してメッセージをブラウザ クライアントにプッシュしています。
私の設定はポートフォリオの例とほぼ同じで、 MessageSendingOperationsを使用してメッセージを送信します。
これは完全に機能します。
しかし、同じメッセージを内部で購読できるようにしたいと考えています。
MessageRecomingOperationsは使用するもののように見えますが、メッセージのプルのみをサポートしているようです。メッセージを自分のサービスにプッシュしてもらいたいです。
SubscribableChannel.subscribe()も有望に見えますが、どうすれば正しいチャンネルを取得できますか?
私は本当に次のようなものを呼び出すことができるようにしたいと思います
java - ログインせずにSpring Websockets @SendToUser?
私は websocket 機能を備えた単純な春のアプリケーションを持っており、これまでのところすべてが機能しています。@SendToUser アノテーションを使用して、サーバーから特定のクライアントにメッセージを送信したいと考えています。これにより、「メッセージを無視しています。プリンシパル情報がありません」というエラーが表示されます。サーバーにログインしていないため、すべてのユーザーは「匿名」であり、プリンシパルを持っていないことを理解しています(現在、春のセキュリティを使用していません)。ただし、すべてのユーザーにはセッション ID があります。セッションIDを使用してユーザーを区別することはできませんか? ユーザーがセッション ID に対応するプリンシパルを取得できるようにするにはどうすればよいですか?
spring - Spring メッセージング WebSocket - setMessageCodec の呼び出し方法
Genson
の代わりにSpring WebSocket を使用しようとしていますJackson
。クライアントから接続しようとすると、次のようになります。
カスタム メッセージ コーデックを設定する必要があるようです。
に.setMessageCodec
メソッドが表示されているTransportHandlingSockJsService
ことはわかりますが、実際に設定できる構成オプションのどこにも表示されません。
.setMessageCodec
クラスにメソッドが存在する必要があると思うSockJsServiceRegistration
ので、構成から設定できます...しかし、そうではありません...アイデアはありますか?
編集:これはバグだと思うので、提起しました: https://jira.spring.io/browse/SPR-12091
spring - Spring で STOMP と WebSocket を使用して特定のユーザーにメッセージを送信する際に認証を確認する
組み込みのMessage BrokerとSTOMP over WebSocketを使用して、Spring 4でリアルタイム通知システムを開発しています。
ユーザー名に従って、特定のユーザーにメッセージを送信できるようにしたいと考えています。この目標を達成するために、次のようにクラスのconvertAndSendToUser
メソッドを使用しています。org.springframework.messaging.simp.SimpMessagingTemplate
構成として:
クライアント側 ( JavaScript経由) では、ユーザー名を指定してチャネルにサブスクライブする必要があります (別の非常によく似た質問: Sending message to specific user on Spring Websocket に従って)。
この最後の点は奇妙に聞こえます...
サブスクライブすることにより、webapp でw.whiteとしてログに記録されていると仮定します。
... w.whiteに送信されたメッセージを見ることができます。これは素晴らしいことです...しかし、購読:
...現在 w.white としてログインしているにもかかわらず、j.pinkmanに送信されたメッセージも表示できます。
この問題を克服する方法はありますか?
アップデート
以下は、WebSocket 経由の接続に関するログです。
spring - 戻り値が据え置かれている場合、RPC のような動作に @SubscribeMapping アノテーション付きメソッドを使用する
STOMP-over-Websocket で RPC のようなセマンティックを実装する @SubscribeMapping アプローチが本当に気に入っています。
残念ながら、その「魔法」では、注釈付きのメソッドが値を返す必要があります。しかし、戻り値がすぐに利用できない場合はどうなるでしょうか? それを待っているメソッド内でのブロックを避けたい。代わりに、準備ができたときに値を発行するコールバックを渡したいと思います。これを行うには、コールバック内でメッセージング テンプレートの convertAndSendToUser() を使用できると考えました。@SubscribeMapping 処理は非常に特殊であり、SimpMessageSendingOperations のインスタンスでは不可能であることが判明しました。
SubscriptionMethodReturnValueHandler で handleReturnValue() を呼び出すことで目標を達成できましたが、これの全体的な仕組みは、ハックではないにしても非常に面倒です (MethodParameter のダミー インスタンスを handleReturnValue() に提供するなど)。
だから私の質問は簡単です: より良い方法はありますか?
java - @Size アノテーションによって提供されるパラメーターを使用して、.properties ファイルからカスタム メッセージを使用するにはどうすればよいですか?
それは単純な問題のはずですが、簡単な解決策を見つけることができませんでした。
Spring Message Resource を使用して、システム上のすべてのテキストを .properties ファイルから提供しています。国際化の質問のためにそれが必要で、Spring のデフォルト メッセージを使用できません。
問題は次のとおりです。
.properties ファイルに次の行があります。
検証コードは次のとおりです。
ただし、無効な値がフィールドに送信されると、メッセージは次のようになります。
「無効な名前 ({min}, {max})」であり、「無効な名前 (3, 5)」ではありません。
いくつかの解決策を試しましたが、成功しませんでした。たとえば、次のとおりです。
しかし、私が使用する場合
次に、Spring からデフォルトのメッセージを取得します (これは使用したくありません)。必要なことは非常に単純です。カスタム .properties ファイルから独自のメッセージを使用しますが、@Size アノテーションによって提供されるパラメーターを使用します。
助言がありますか?
前もって感謝します。