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