20

在使用 Spring Websockets 制作诸如聊天应用程序之类的东西时,了解谁订阅了任何给定主题是很有用的。例如,在客户端中显示的存在数据。

我知道我可以实现 ApplicationListener 并保留我自己的“已连接用户”列表,但似乎该库必须已经在做这项工作。

直接从库中获取活动订阅信息的推荐方法是什么(而不在内存或数据库中维护我自己的列表)。

4

1 回答 1

3

没错,您可以使用ApplicationContext 事件,但不幸的是,这些事件处理用户会话事件和代理事件 - 因此当用户订阅特定主题时不会通知您。

您可以在使用SimpleBrokerMessageHandler时通过获取SubscriptionRegistry来做到这一点。但同样,SimpleMessageBroker 不用于生产用途。

如果您使用的是 RabbitMQ,则可以从其 REST API 中获取该信息。

问题是,这非常特定于代理实现,所以我想知道这样的功能在 Spring Framework 中是否有意义。你能打开一个JIRA 问题来开始讨论吗?

于 2014-07-23T09:42:16.473 回答