websocket会话示例不集群.. spring-session-1.2.2

我正在测试spring会话websocket样本的集群。

我按照文档中的描述运行示例: http : //docs.spring.io/spring-session/docs/current/reference/html5/guides/websocket.html 。 代码来自: https : //github.com/spring-projects/spring-session/archive/1.2.2.RELEASE.zip 。

如果我在一个Tomcat服务器上运行应用程序,则所有工作都按预期工作。 但如果我在两台服务器上运行两个应用程序,则无效。

我在8080和8090的两个Tomcat服务器中的每一个上启动应用程序并登录到每个服务器。 8080按预期出现。 8090按预期出现并列出8080的用户名。但8090的用户名永远不会添加到8080的列表中。

如果我刷新8090的网页,则用户将从列表中删除,8090的用户将被添加到8080的列表中。此循环将继续使用这两个应用程序。

看起来春季会议正在分享会话信息。 我在Redis中看到两个登录条目。

我是否希望此示例在多个服务器上运行?

提前致谢。

我假设您已配置了一个stomp代理中继,并且您使用了AbstractSessionWebSocketMessageBrokerConfigurer类来配置具有spring会话的WebSocket。 之后,群集仍然无效,因为默认发布机制使用本地sessionsRepository来解析用户的套接字ID。 我们不想要这种机制。 我们需要使用远程存储库。 removeRepository已存在于sprint中。 要激活它,您只需配置MessageBrokerRegistry:

registry.enableStompBrokerRelay("/topic/", "/queue/", "/exchange/") .setUserDestinationBroadcast("/topic/logbook-unresolved-user") .setUserRegistryBroadcast("/topic/logbook-user-registry") 

这对我来说可以。 我希望它会有所帮助。