Как найти всех пользователей, подписавшихся на тему в весенних веб-сокетах

При создании чего-то вроде приложения чата с использованием Spring Websockets полезно знать, кто все подписан на какую-либо тему. Например, данные о присутствии отображаются в клиентах.

Я знаю, что могу реализовать ApplicationListener и вести собственный список "подключенных пользователей", но, похоже, библиотека уже выполняет эту работу.

Каков рекомендуемый способ получения информации об активной подписке из библиотеки напрямую (без сохранения собственного списка в памяти или в БД).

1 ответ

Вы правы, вы можете использовать события ApplicationContext, но, к сожалению, эти события имеют отношение к событиям пользовательских сессий и событиям брокера, поэтому вы не будете уведомлены, когда пользователь подписывается на определенную тему.

Вы можете сделать это при использовании SimpleBrokerMessageHandler, получив SubscriptionRegistry. Но опять же, SimpleMessageBroker не для производственного использования.

Если вы используете RabbitMQ, вы можете получить эту информацию из его REST API.

Дело в том, что это очень специфично для реализации брокера, поэтому мне интересно, имеет ли такая возможность смысл в Spring Framework. Не могли бы вы открыть вопрос JIRA, чтобы начать обсуждение?

Другие вопросы по тегам