From 3c8d864b5f68af5167199e0d5c9ff6c0c5852638 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期一, 20 一月 2025 11:35:45 +0800 Subject: [PATCH] !639 发布 5.3.0-BETA 公测版本 Merge pull request !639 from 疯狂的狮子Li/dev --- ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java | 41 +++++++++++++++++++++++++++++++++++++++-- 1 files changed, 39 insertions(+), 2 deletions(-) diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java index 9b93193..9c2372b 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/org/dromara/common/websocket/holder/WebSocketSessionHolder.java @@ -2,9 +2,11 @@ import lombok.AccessLevel; import lombok.NoArgsConstructor; +import org.springframework.web.socket.CloseStatus; import org.springframework.web.socket.WebSocketSession; import java.util.Map; +import java.util.Set; import java.util.concurrent.ConcurrentHashMap; /** @@ -17,20 +19,55 @@ private static final Map<Long, WebSocketSession> USER_SESSION_MAP = new ConcurrentHashMap<>(); + /** + * 灏哤ebSocket浼氳瘽娣诲姞鍒扮敤鎴蜂細璇滿ap涓� + * + * @param sessionKey 浼氳瘽閿紝鐢ㄤ簬妫�绱細璇� + * @param session 瑕佹坊鍔犵殑WebSocket浼氳瘽 + */ public static void addSession(Long sessionKey, WebSocketSession session) { + removeSession(sessionKey); USER_SESSION_MAP.put(sessionKey, session); } + /** + * 浠庣敤鎴蜂細璇滿ap涓Щ闄ゆ寚瀹氫細璇濋敭瀵瑰簲鐨刉ebSocket浼氳瘽 + * + * @param sessionKey 瑕佺Щ闄ょ殑浼氳瘽閿� + */ public static void removeSession(Long sessionKey) { - if (USER_SESSION_MAP.containsKey(sessionKey)) { - USER_SESSION_MAP.remove(sessionKey); + WebSocketSession session = USER_SESSION_MAP.remove(sessionKey); + try { + session.close(CloseStatus.BAD_DATA); + } catch (Exception ignored) { } } + /** + * 鏍规嵁浼氳瘽閿粠鐢ㄦ埛浼氳瘽Map涓幏鍙朩ebSocket浼氳瘽 + * + * @param sessionKey 瑕佽幏鍙栫殑浼氳瘽閿� + * @return 涓庣粰瀹氫細璇濋敭瀵瑰簲鐨刉ebSocket浼氳瘽锛屽鏋滀笉瀛樺湪鍒欒繑鍥瀗ull + */ public static WebSocketSession getSessions(Long sessionKey) { return USER_SESSION_MAP.get(sessionKey); } + /** + * 鑾峰彇瀛樺偍鍦ㄧ敤鎴蜂細璇滿ap涓墍鏈塛ebSocket浼氳瘽鐨勪細璇濋敭闆嗗悎 + * + * @return 鎵�鏈塛ebSocket浼氳瘽鐨勪細璇濋敭闆嗗悎 + */ + public static Set<Long> getSessionsAll() { + return USER_SESSION_MAP.keySet(); + } + + /** + * 妫�鏌ョ粰瀹氱殑浼氳瘽閿槸鍚﹀瓨鍦ㄤ簬鐢ㄦ埛浼氳瘽Map涓� + * + * @param sessionKey 瑕佹鏌ョ殑浼氳瘽閿� + * @return 濡傛灉瀛樺湪瀵瑰簲鐨勪細璇濋敭锛屽垯杩斿洖true锛涘惁鍒欒繑鍥瀎alse + */ public static Boolean existSession(Long sessionKey) { return USER_SESSION_MAP.containsKey(sessionKey); } -- Gitblit v1.9.3