我正在使用 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)扩展的,所以你可以尝试自己扩展它,就像这个例子:
我没有时间验证这一点,但如果您的问题只是 UserSessionRegistry 实现,这可能是重写 @Bean 方法的方法。
更新:
经过进一步挖掘,我找到了整个流程的真正入口点:搜索 DefaultHandshakeHandler 类,具有确定用户方法(由于我的分数低,我无法添加更多链接)
关于spring-websocket - Spring Web 套接字实现中的自定义 UserSessionRegistry 用于 Multi-Tenancy 场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28272320/