| | |
| | | package com.dy.pipIrrRemote.largeScreen; |
| | | |
| | | import lombok.extern.slf4j.Slf4j; |
| | | import org.springframework.context.annotation.Scope; |
| | | import org.springframework.stereotype.Component; |
| | | |
| | | import jakarta.websocket.*; |
| | |
| | | * @Author: liurunyu |
| | | * @Date: 2025/2/10 15:25 |
| | | * @Description 客户端(浏览器)每建立一个websocket连接,服务端就会创建一个WebSocketServer实例 |
| | | * 应用前提是存在一个Config类,如本模块的WebSocketConfig,这时@ServerEndpoint受SpringBoot容器 |
| | | * 管理了(在嵌入式web Servlet环境中) |
| | | */ |
| | | @Slf4j |
| | | @ServerEndpoint("/websocket/ls/{id}") |
| | | @Component |
| | | @Scope("prototype") // 非单例,每次请求都会创建新的实例 |
| | | public class WebSocketServer { |
| | | |
| | | // 静态变量,记录当前在线连接数 |
| | |
| | | /** |
| | | * 服务器主动群推送消息 |
| | | */ |
| | | public static void sendAllMessage(String message) throws IOException { |
| | | public static void sendMessage2AllClient(String message) throws IOException { |
| | | ConcurrentHashMap.KeySetView<String, WebSocketServer> ids = webSocketMap.keySet(); |
| | | for (String id : ids) { |
| | | WebSocketServer webSocketServer = webSocketMap.get(id); |
| | |
| | | /** |
| | | * 服务器指定客户端推送消息 |
| | | */ |
| | | public static void sendOneMessage(String message, String id) throws IOException { |
| | | public static void sendMessage2OneClient(String message, String id) throws IOException { |
| | | if (message != null && message.length() != 0 && webSocketMap.containsKey(id)) { |
| | | webSocketMap.get(id).sendMessage(message); |
| | | } else { |