From 0892d843cd394f383ff50f480f7f22f2ec3829bc Mon Sep 17 00:00:00 2001 From: zhaowenxuan <chacca165@163.com> Date: 星期五, 27 六月 2025 20:24:45 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java | 66 +++++++++++++++++++++++++++++++++ 1 files changed, 66 insertions(+), 0 deletions(-) diff --git a/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java b/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java new file mode 100644 index 0000000..e1efb33 --- /dev/null +++ b/ltkj-admin/src/main/java/com/ltkj/web/websocket/WebSockerManager.java @@ -0,0 +1,66 @@ +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<Long, ClientSessionInfo> userSessions = new ConcurrentHashMap<>(); + private static final ConcurrentHashMap<String, WebSocketClientInfo> 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); + } +} -- Gitblit v1.8.0