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