package com.ltkj.web.websocket; import cn.hutool.json.JSONUtil; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Component; import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.TextMessage; import org.springframework.web.socket.WebSocketSession; import org.springframework.web.socket.handler.TextWebSocketHandler; import redis.clients.jedis.util.SafeEncoder; import java.util.concurrent.ConcurrentHashMap; /** * @Company: 西安路泰科技有限公司 * @Author: zhaowenxuan * @Date: 2025/6/27 14:59 */ @Slf4j @Component public class WebSockerManager extends TextWebSocketHandler { private static final ConcurrentHashMap userSessions = new ConcurrentHashMap<>(); private static final ConcurrentHashMap sessions = new ConcurrentHashMap<>(); private WebSocketClientInfo getUser(WebSocketSession session) { // long uid = Long.parseLong(session.getAttributes().get("uid").toString()); // String hospId = session.getAttributes().get("hospId").toString(); // WebSocketClientInfo info = new WebSocketClientInfo(); // info.setUid(uid); // info.setHospId(hospId); // return info; WebSocketClientInfo clientInfo = new WebSocketClientInfo(); clientInfo.setUid(123L); clientInfo.setHospId("hosp"); return clientInfo; } @Override public void afterConnectionEstablished(WebSocketSession session) throws Exception { WebSocketClientInfo clientInfo = getUser(session); // userSessions.put(clientInfo.getUid(), new ClientSessionInfo(session, clientInfo.getHospId())); sessions.put(session.getId(),clientInfo); log.info(JSONUtil.toJsonStr(sessions)); session.sendMessage(new TextMessage("连接成功")); } @Override protected void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception { String payload = message.getPayload(); // 处理 ping/pong if ("ping".equals(payload)) { session.sendMessage(new TextMessage("pong")); return; } String sessionId = session.getId(); WebSocketClientInfo clientInfo = sessions.get(sessionId); log.info("[WebSocket] 收到客户端消息 userId:{} msg: {}",clientInfo.getUid(),payload); session.sendMessage(new TextMessage("[WebSocket] 收到客户端消息 msg: " + payload)); } @Override public void afterConnectionClosed(WebSocketSession session, CloseStatus status) throws Exception { log.info("[WebSocket] 连接关闭: " + status); } }