spring - 如何在spring websockets中找到所有订阅主题的用户

标签 spring stomp spring-websocket

当使用 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/

相关文章:

java - 如何获取RabbitMQ中某个主题的订阅数量

java - Spring Boot 在 WebSocket 上使用 Stomp : Handshake failed due to invalid Upgrade header: null

java - WebSocket DeploymentException 连接失败

spring-websocket - 如何使用 Spring Reactive WebSocket 并将其转换为 Flux 流?

java - JPA:使用服务和多个存储库的正确方法

java - 在 spring boot 中使用 web socket 通知特定用户

java - Fabrica8、Vert.x、Karaf、Felix、Equinox、Spring DM 和 Fuse 以及 Docker 之间的区别

websocket - 使用什么 STOMP header 来关闭订阅?

java - Spring过滤请求

java - Spring Solr 存储库