From 724ebf8dbd7c076f815a2dccaf63504e41f85b79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B1=88=E5=B1=95=E8=88=AA?= <2426745133@qq.com> Date: Tue, 9 Sep 2025 18:47:48 +0800 Subject: [PATCH] =?UTF-8?q?09-09-netty=E5=AE=8C=E5=96=84=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dromara/websocket/ChatServerHandler.java | 24 +++++++++++++++---- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/ChatServerHandler.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/ChatServerHandler.java index fa967bc4..3448c186 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/ChatServerHandler.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/ChatServerHandler.java @@ -140,7 +140,7 @@ public class ChatServerHandler extends SimpleChannelInboundHandler list = chatHistoryService.list(historyLambdaQueryWrapper); if (list != null && !list.isEmpty()) { - roomCounts.put(chatGroup.getId().toString(), list.size()); + roomCounts.put(loginUser.getUserId()+"+"+chatGroup.getId().toString(), list.size()); } //在遍历的同时寻找是否有系统消息房间 if (chatGroup.getMembers().contains("system")){ @@ -263,8 +263,14 @@ public class ChatServerHandler extends SimpleChannelInboundHandler channelHandlerContexts = userChannelMap.get(id.toString()); //如果满足则说明用户在线 if (channelHandlerContexts != null && !channelHandlerContexts.isEmpty()) { - //所有房间的未读消息数 - jsonObject.put("countValue", JsonUtils.toJsonString(userRoomCountMap)); + //构建所有房间的未读消息数 + HashMap temp = new HashMap<>(); + userRoomCountMap.forEachKey(0, (value) -> { + if (value.contains(id.toString())){ + temp.put(value,userRoomCountMap.get(value)); + } + }); + jsonObject.put("countValue", JsonUtils.toJsonString(temp)); //给每个通道发送对应消息 for (ChannelHandlerContext handlerContext : channelHandlerContexts) { sendMessage(handlerContext, jsonObject.toString()); @@ -342,19 +348,27 @@ public class ChatServerHandler extends SimpleChannelInboundHandler channelHandlerContexts = userChannelMap.get(userId.toString()); if (channelHandlerContexts != null && !channelHandlerContexts.isEmpty()) { //给每个通道发送对应消息 for (ChannelHandlerContext handlerContext : channelHandlerContexts) { + //同时发送所有未读消息给前端进行渲染 + HashMap temp = new HashMap<>(); + userRoomCountMap.forEachKey(0, (value) -> { + if (value.contains(userId.toString())){ + temp.put(value,userRoomCountMap.get(value)); + } + }); + jsonObject.put("countValue", temp); sendMessage(handlerContext, jsonObject.toString()); } }