一个注解实现 WebSocket 集群方案,这样玩才爽!
WebSocket
大家应该是再熟悉不过了,如果是单体应用确实不会有什么问题,但是当我们的项目使用微服务架构时,就可能会存在问题
比如
服务A
有两个实例
A1
和
A2
,前端的
WebSocket
客户端
C
通过网关的负载均衡连到了
A1
,这个时候当
A2
触发消息发送的逻辑,需要将某个消息发送给所有的客户端时,
C
就接受不到消息
这个时候我们很快就能想到一种最简单的解决方案,就是把
A2
的消息转发给
A1
,
A1
再把消息发送给
C
,这样
C
就能收到
A2
发送的消息了
用法
接下来让我们看看这个库的用法
首先我们需要在启动类上添加一个注解
@EnableWebSocketLoadBalanceConcept
@EnableWebSocketLoadBalanceConcept
@EnableDiscoveryClient
@SpringBootApplication
public class AServiceApplication {
public static void main(String[] args) {
SpringApplication.run(AServiceApplication.class, args);
接着我们在需要发送消息的地方注入
WebSocketLoadBalanceConcept
就可以愉快的跨实例发消息啦
@RestController
@RequestMapping("/ws")
public class WsController {
@Autowired
private WebSocketLoadBalanceConcept concept;
@RequestMapping("/send")
public void send(@RequestParam String msg) {
concept.send(msg);