From 56dfe0d4bf81262622a1919cceb2b039fd356209 Mon Sep 17 00:00:00 2001 From: 无关风月 <443237572@qq.com> Date: 星期二, 03 九月 2024 16:52:49 +0800 Subject: [PATCH] 代码提交 bug解决 --- ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/websocket/WebSocketUsers.java | 40 +++++++++++++++++++++++++++++++++++----- 1 files changed, 35 insertions(+), 5 deletions(-) diff --git a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/websocket/WebSocketUsers.java b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/websocket/WebSocketUsers.java index 8ab720b..af23895 100644 --- a/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/websocket/WebSocketUsers.java +++ b/ruoyi-modules/ruoyi-system/src/main/java/com/ruoyi/system/websocket/WebSocketUsers.java @@ -19,12 +19,12 @@ private static final Logger LOGGER = LoggerFactory.getLogger(WebSocketUsers.class); private static Map<String, Session> USERS = new ConcurrentHashMap<>(); - private static Map<String, Integer> USER_TYPES = new ConcurrentHashMap<>(); + private static Map<String, String> USER_TYPES = new ConcurrentHashMap<>(); - public static void put(String key, Session session, Integer clientType) + public static void put(String userId, Session session) { - USERS.put(key, session); - USER_TYPES.put(key, clientType); + USERS.put(userId, session); + USER_TYPES.put(userId, session.getId()); } public static boolean remove(Session session) @@ -73,7 +73,7 @@ return USERS; } - public static Integer getUserType(String key) { + public static String getUserType(String key) { return USER_TYPES.get(key); } @@ -83,6 +83,21 @@ for (Session value : values) { sendMessageToUserByText(value, message); } + + //if (userId.equals(USER_TYPES.get(key))) { + // sendMessageToUserByText(value, message); + // } + // for (Session value : values) { + // sendMessageToUsersById(userId, message); + // + // } + } + public static void sendMessageToUsersByUserId(String message,String userId) + { + // 遍历map集合USERS 如果key和userId相同 那么将消息推送给他 + USERS.entrySet().stream() + .filter(entry -> userId.equals(entry.getKey())) + .forEach(entry -> sendMessageToUserByText(entry.getValue(), message)); } public static void sendMessageToUserByText(Session session, String message) @@ -119,4 +134,19 @@ } } } + /** + * 根据用户id发送消息 + * + * @param userId 用户id + * @param message 发送的消息 + */ + public static void sendMessageToUsersById(String userId, String message) { + for (Map.Entry<String, Session> entry : USERS.entrySet()) { + String key = entry.getKey(); + Session session = entry.getValue(); + if (userId.equals(USER_TYPES.get(key))) { + sendMessageToUserByText(session, message); + } + } + } } -- Gitblit v1.7.1