在使用Spring Websockets制作诸如聊天应用之类的东西时,了解订阅任何给定主题的所有人很有用。例如,客户端显示的在线用户数据。
我知道我可以实现ApplicationListener并维护自己的“已连接用户”列表,但似乎库必须已经执行了这项工作。
获取来自库的活动订阅信息的推荐方法是什么(而不必在内存或数据库中维护自己的列表)?
在使用Spring Websockets制作诸如聊天应用之类的东西时,了解订阅任何给定主题的所有人很有用。例如,客户端显示的在线用户数据。
我知道我可以实现ApplicationListener并维护自己的“已连接用户”列表,但似乎库必须已经执行了这项工作。
获取来自库的活动订阅信息的推荐方法是什么(而不必在内存或数据库中维护自己的列表)?
你说得没错,你可以使用ApplicationContext events,但不幸的是这些事件涉及用户会话事件和代理事件——因此当用户订阅特定主题时,你将不会收到通知。
当使用SimpleBrokerMessageHandler时,您可以通过获取SubscriptionRegistry来实现。但是,请注意,SimpleMessageBroker不适用于生产环境。
如果您正在使用RabbitMQ,您可以从其REST API中获取该信息。
问题在于,这非常特定于代理实现,因此我想知道在Spring Framework中是否有这样的功能。您能否打开JIRA issue开始讨论?