当使用 Spring Websockets 制作类似聊天应用程序时,了解谁订阅了任何给定主题是很有用的。对于,例如显示在客户端中的状态数据。
我知道我可以实现 ApplicationListener 并保留我自己的“连接用户”列表,但似乎库必须已经在做这项工作。
直接从库中获取事件订阅信息的推荐方法是什么(无需在内存或数据库中维护我自己的列表)。
最佳答案
你是对的,你可以使用 ApplicationContext events ,但不幸的是,这些事件处理用户 session 事件和代理事件 - 因此当用户订阅特定主题时不会通知您。
您可以在使用 SimpleBrokerMessageHandler 时做到这一点, 通过获取 SubscriptionRegistry .但同样,SimpleMessageBroker 不用于生产。
如果您使用的是 RabbitMQ,则可以从其 REST API 获取该信息。
问题是,这是非常特定于代理实现的,所以我想知道这样的功能在 Spring 框架中是否有意义。你能打开一个JIRA issue吗?开始讨论?
关于spring - 如何在spring websockets中找到所有订阅主题的用户,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24795340/