問題タブ [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.
spring - websockets と spring 4 と tomcat 7 ではそのような方法の問題はありません
こんにちは、websocket と spring 4 および tomcat 7 で次の問題が発生しています。Tomcat にアプリケーションをデプロイしましたが、websocket を機能させようとすると、次のエラーが発生します。
誰でも私の競合がどこにあるかについて何か考えがありました.Mavenの依存関係の問題が階層をたどっていることを知っています...
spring-websocket - Spring Websocket メッセージング テンプレートは、@Scheduler アノテーションがないと Controller からデータを公開しない
上記のコードは、スケジュールされた遅延で UI にデータを公開します。しかし、@Scheduler アノテーションをコメントアウトして handleRequest からこのメソッドを呼び出すと、UI にデータが公開されません。その理由は何ですか?
spring - Spring 4 STOMPが接続時にヘッダーにキューサフィックスを送信しない
Websockets と RabbitMQ をブローカーとして Spring MVC 4 を使用する小さなプロジェクトを作成しました。単一のユーザー (convertAndSendToUser) に送り返そうとしていますが、機能していないようです。アプリケーションの機能は次のとおりです。
- HTTP 経由で Spring Security に認証します。認証は AJAX を介して行われ、バックエンドはすべての新しい接続にユーザー名として UUID を割り当てます。同じユーザー名を持つ複数のクライアントが存在する可能性があるため、同じユーザー名でログインしている可能性がありますが、個々のブラウザーをターゲットにできるようにしたいと考えています。
AJAX で認証した後、webapp は Websocket で STOMP を使用して API に接続します。これらは、CONNECT FRAME で送り返されるヘッダーです。
body: "" command: "CONNECTED" headers: Object heart-beat: "0,0" server: "RabbitMQ/3.3.1" session: "session-OGzAN6T8Y0X9ft3Jq04fiQ" user-name: "88dc9424-72e3-4814-be8c- e31dbf89b521" バージョン: "1.1"
ご覧のとおり、frame-suffixまたは session-id フィールドはありません。
- バックエンドから convertAndSendToUser を使用すると、応答は /exchange/jobs-userh6g_48h9 のような一意のキューに送信されます。キュー名は /exchange/jobs ですが、Spring は自動的にサフィックス-userh6g_48h9を付加します。ユーザー名は "user" で、sessionId は "h6g_48h9" です。これで問題ありません。この動作が必要ですが、問題は、クライアント (webapp) が CONNECT フレームでこのセッション ID を取得せず、取得する方法がないことです。実際にその一意のキューにサブスクライブします。
これを解決するには?クライアントがこのサフィックスを取得して、独自のキューにサブスクライブできるように、接続時にキュー サフィックス/セッション ID が返されます。現在、この情報が不足しているため、サーバーからメッセージが返されません。
spring - connect イベント (SockJS、STOMP、Spring) でメッセージを送信するにはどうすればよいですか?
STOMP を介して SockJS を介して Spring バックエンドに接続しています。すべてが正常に機能し、構成はすべてのブラウザーなどでうまく機能します。ただし、最初のメッセージを送信する方法が見つかりません。シナリオは次のようになります。
- クライアントはトピックに接続します
バックエンド構成は多かれ少なかれ次のようになります。
- バックエンドから (接続イベントで) 自動応答をクライアントに送信して、クライアント (クライアント) が GET を送信する必要なく、データセット (たとえば、db から sth を読み取る) をクライアントに提供できるようにします。リクエスト(またはその他)。要約すると、彼が接続した直後に、SimMessagingTemplate オブジェクトを使用してトピックに関するメッセージを彼に送信したいだけです。
通常、テンプレートが既に自動配線されている場合は、REST コントローラーなどで次のようにします。
接続イベントでこれを達成するにはどうすればよいですか?
アップデート
私はそれを機能させることができました。しかし、私はまだ構成について少し混乱しています。ここでは、最初のメッセージを送信する方法を 2 つの構成で示します。
1) 最初の解決策
JS部分
Java部分
構成
...およびその他の呼び出し
2) 2 番目の解決策
JS部分
Java部分
構成
...およびその他の呼び出し
まとめ:
最初のケースでは、2 つのサブスクリプションを使用します。これは避けたかったので、1 つだけで管理できると考えました。
ただし、2 番目のものにはアプリケーションの接頭辞がありません。しかし、少なくとも、提供されたトピックをリッスンし、最初のメッセージを送信するための単一のサブスクリプションを持つことができます。
spring - 内部で spring-websocket メッセージをサブスクライブする
spring-websocket を使用してメッセージをブラウザ クライアントにプッシュしています。
私の設定はポートフォリオの例とほぼ同じで、 MessageSendingOperationsを使用してメッセージを送信します。
これは完全に機能します。
しかし、同じメッセージを内部で購読できるようにしたいと考えています。
MessageRecomingOperationsは使用するもののように見えますが、メッセージのプルのみをサポートしているようです。メッセージを自分のサービスにプッシュしてもらいたいです。
SubscribableChannel.subscribe()も有望に見えますが、どうすれば正しいチャンネルを取得できますか?
私は本当に次のようなものを呼び出すことができるようにしたいと思います
spring - Stomp.js および Spring WebSocket と Web MVC プロジェクトの統合
「*.htm」拡張子で実行されている1つの春のプロジェクトがあります.web.xmlファイルにバインドしています。
ここで、チャット アプリケーション用に Spring WebSocket と stomp js を統合したいと考えていますが、ここでの問題は、stomp.js が「.htm」拡張子なしでサーバーにリクエストを送信していることです。そのため、各リクエスト (info またはその他の xhr) で 404 エラーが発生しています。
Spring WebSocket を有効にして '.htm' 拡張子の js をストンプする方法はありますか?
この拡張機能を削除することはできません。現在のアプリケーションが中断されます。