cuikaidong
2025-08-15 c4948017824b1efa71faeb163e3609bec91f5719
lxzn-module-system/lxzn-system-biz/src/main/java/org/jeecg/modules/message/websocket/WebSocket.java
@@ -1,7 +1,9 @@
package org.jeecg.modules.message.websocket;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArraySet;
import javax.annotation.Resource;
import javax.websocket.*;
import javax.websocket.server.PathParam;
@@ -23,7 +25,8 @@
@Slf4j
@ServerEndpoint("/websocket/{userId}")
public class WebSocket {
    private static CopyOnWriteArraySet<WebSocket> webSockets =new CopyOnWriteArraySet<>();
    /**线程安全Map*/
    private static ConcurrentHashMap<String, Session> sessionPool = new ConcurrentHashMap<>();
@@ -33,6 +36,7 @@
    public static final String REDIS_TOPIC_NAME = "socketHandler";
    @Resource
    private JeecgRedisClient jeecgRedisClient;
    private Session session;
    //==========【websocket接受、推送消息等方法 —— 具体服务节点推送ws消息】========================================================================================
@@ -187,5 +191,17 @@
        }
    }
    //=======【采用redis发布订阅模式——推送消息】==========================================================================================
    // 此为广播消息
    public void sendAllMessage(String message) {
//       log.info("【websocket消息】广播消息:"+message);
        for(WebSocket webSocket : webSockets) {
            try {
                if(webSocket.session.isOpen()) {
                    webSocket.session.getAsyncRemote().sendText(message);
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}