这里鸣谢码云xxssyyyyssxx 作者
场景公司的一个直播业务需要用到集群WebSocket,2019年用过以Redis集群的方式,因为自己的经验不足,有消息累积增加发送,意思就是,当一个用户,重复断开、连接。会根据次数,来增加接收信息的次数。
- 直接开干,上才艺
maven项目直接引入pom依赖
<!-- https://mvnrepository.com/artifact/top.jfunc.websocket/websocket-springboot-starter -->
<dependency>
<groupId>top.jfunc.websocket</groupId>
<artifactId>websocket-springboot-starter</artifactId>
<version>1.8.2.4</version>
</dependency>
2.用法
- 第一步在SpringBoot 启动类加上注解
@EnableMemWebSocketManager 单机管理
或者
@EnableRedisWebSocketManager 利用Redis的订阅/发布机制实现集群管理
- 第二步在要用地方注入Bean
@Autowired
private WebSocketManager webSocketManager;
- 第三步发送群发消息
public void sendWebsocket(){
Map<String,Object> map = new HashMap<>();
Map<String,Object> paramMap = new HashMap<String,Object>();
map.put("liveKey","alive");
map.put("liveValue",paramMap);
String result = JSON.toJSONString(map);
try {
log.info("websocket推送的信息为:{}",result);
webSocketManager.broadcast(result);
}catch (Exception e){
e.printStackTrace();
log.info("websocket推送异常",result);
}
log.info("-----推送websocket--end---");
}
该源码中包括一对一发送、群发、socket验活等,具体请查看码云。
该代码已在千级并发中实战开发中,取得优秀的成绩,请放心使用
再次感谢作者