web-dev-qa-db-ja.com

SpringWebSocketでトピックにサブスクライブしているすべてのユーザーを見つける方法

Spring Websocketを使用してチャットアプリケーションのようなものを作成する場合、特定のトピックに誰がサブスクライブしているのかを知っておくと便利です。のために、例えばクライアントに表示されるプレゼンスデータ。

ApplicationListenerを実装し、「接続されたユーザー」の独自のリストを保持できることは知っていますが、ライブラリはすでにこの作業を行っている必要があるようです。

ライブラリからアクティブなサブスクリプション情報を直接取得するための推奨される方法は何ですか(メモリまたはデータベースに自分のリストを保持せずに)。

18
npskirk

そうです、 ApplicationContext events を使用できますが、残念ながら、これらのイベントはユーザーセッションイベントとブローカーイベントを処理するため、ユーザーが特定のトピックにサブスクライブしても通知されません。

SimpleBrokerMessageHandler を使用する場合は、 SubscriptionRegistry を取得することでこれを行うことができます。ただし、SimpleMessageBrokerは実稼働用ではありません。

RabbitMQを使用している場合は、その情報をREST APIから取得できます。

問題は、これはブローカーの実装に非常に固有であるため、そのような機能がSpringFrameworkで意味をなすかどうか疑問に思っています。 JIRAの問題 を開いてディスカッションを開始していただけますか?

3
Brian Clozel