spring-websocket - Spring Web 套接字实现中的自定义 UserSessionRegistry 用于 Multi-Tenancy 场景?

标签 spring-websocket

我正在使用 Spring Websocket(4.1.4 版本)并使用 @SendToUser 向当前用户发送消息。但我有一个问题。我们的平台是一个 Multi-Tenancy 平台,其中用户名不是唯一的,而是用户名和租户 ID 的组合是唯一的。 DefaultUserSessionRegistry 保存从用户名到 session ID 列表的映射:

private final ConcurrentMap<String, Set<String>> userSessionIds = new ConcurrentHashMap<String, Set<String>>();

这在我的场景中不起作用。那么有没有办法可以插入我的自定义 UserSessionRegistry 实现?

最佳答案

经过代码搜索,问题似乎与此line有关。 我发现这个类是由WebSocketMessageBrokerConfigurationSupport扩展的,而WebSocketMessageBrokerConfigurationSupport是由@Configuration类(DelegatingWebSocketMessageBrokerConfiguration)扩展的,所以你可以尝试自己扩展它,就像这个例子:

https://github.com/arawn/overview-of-spring4/blob/master/src/main/java/jco/conference/oxquiz/WebSocketConfig.java

我没有时间验证这一点,但如果您的问题只是 UserSessionRegistry 实现,这可能是重写 @Bean 方法的方法。

更新:

经过进一步挖掘,我找到了整个流程的真正入口点:搜索 DefaultHandshakeHandler 类,具有确定用户方法(由于我的分数低,我无法添加更多链接)

关于spring-websocket - Spring Web 套接字实现中的自定义 UserSessionRegistry 用于 Multi-Tenancy 场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28272320/

相关文章:

spring-mvc - 在 Spring 中启用 WebSockets 的跨域请求

java - Spring-Security 中的 AbstractWebSocketMessageBrokerConfigurer 已弃用 - 有替代方案吗?

rabbitmq - Spring STOMP Broker Relay + RabbitMQ Cluster 和 HA 代理前端用于负载平衡

java - Spring boot websocket发送jsonstring

Spring 4 websocket + Tomcat 7.54 异步支持不工作

websocket - Charles 中的 WebSocket

spring - 如何在 Spring Websocket 的 Spring SockJS 模块中禁用自动添加 CORS header

java - 通过 ServletContextListener 中的 SimpMessagingTemplate 向所有客户端发送消息

angular - 如果使用 Spring + SockJS + STOMP,websocket 消息会被缓存吗?如果没有,如何检测网络断开?

spring-boot - Spring websocket (WSS) 与 angular sockjs (HTTPS) 在安全 web socket 服务器 (tomcat) 上