概述
本文对websocket集群的方案进行讨论:
- 在websocket集群中,后端准确将指定的消息推送到指定的用户,前端实时接收服务推送的消息
- 对websocket集群的方案进行讨论,并确定最佳方案
webscoket集群方案
集群方案分析
在上个博文 Spring Boot系列20 Spring Websocket实现向指定的用户发送消息 中实现向指定用户发送消息的功能,但是我们将提供websocket服务的服务进行集群(如上图)则存在如下问题:
上图中,用户A通过websocket注册到服务A,服务A通过STOMP协议订阅RabbitMQ上的消息,同理用户B。如果用户A连接到服务A上,那么在位于服务B上的MQ模块即使使用SimpMessagingTemplate实例向用户A发送消息,此消息也无法到达用户A,原因是因为服务B上没有服务A的注册信息,无法准确的推送消息.只有在服务A上的MQ模块使用SimpMessagingTemplate实例向这个用户发送消息,消息才会到达用户A