-
配置webSockerCinfig
/* 1、如果使用默认的嵌入式容器 比如Tomcat 则必须手工在上下文提供ServerEndpointExporter。 2、如果使用外部容器部署war包,则不需要提供提供ServerEndpointExporter,因为此时SpringBoot默认将扫描 服务端的行为交给外部容器处理,所以线上部署的时候要把WebSocketConfig中这段注入bean的代码注掉 */ @Configuration public class WebSocketConfig { @Bean public ServerEndpointExporter serverEndpointExporter() { return new ServerEndpointExporter(); } }
-
配置WebSocketServer
@Component @ServerEndpoint("/webSocket") public class WebSocketServer { // concurrent包的线程安全set, 用来存放每个客户端对应的DCHWebSocket对象 private static CopyOnWriteArraySet<WebSocketServer> webSocketSet = new CopyOnWriteArraySet<>(); // 与客户端的连接会话, 需要通过session给客户端发送数据 private Session session=null; private Logger logger = LoggerFactory.getLogger(WebSocketServer.class); @OnOpen public void onOpen(Session session) { System.out.println("新建了一个websocket连接"); this.session = session; webSocketSet.add(this); } @OnClose public void onClose() { System.out.println("关闭了一个websocket连接"); webSocketSet.remove(this); } @OnMessage public void onMessage(String message) { try { for (WebSocketServer webSocket : webSocketSet) { Session socketSession = webSocket.session; if (socketSession.isOpen()) { socketSession.getBasicRemote().sendText(message); } } }catch (Exception e) { logger.error("socket发送消息异常", e); } } @OnError public void onError(Throwable error) { System.out.println("webSocket发生错误"); logger.error("webSocket发生错误", error); } }
-
调用WebSocketController
//实现自己的逻辑 @Autowired private WebSocketServer webSocketServer; @GetMapping("/xxx") public void receiveImgCountMsg(String xxx) { JSONObject msgObj = new JSONObject(); msgObj.put("xxx", xxxx); webSocketServer.onMessage(msgObj.toJSONString()); }
4.pom引入
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-websocket</artifactId> </dependency>
5.参考:SpringBoot快速搭建简易WebSocket系统(springboot整合thymeleaf模板引擎)_一位不爱熬夜但又经常熬夜的程序员的博客-CSDN博客
SpringBoot集成WebSocket实现
于 2022-04-22 15:19:56 首次发布
该博客介绍了如何在SpringBoot应用中配置WebSocket,包括创建WebSocketConfig配置类以启用ServerEndpointExporter,定义WebSocketServer处理连接、消息收发,以及WebSocketController调用来发送消息。通过添加相关依赖并提供配置,可以快速搭建一个简单的WebSocket系统。
摘要由CSDN通过智能技术生成