From 579fd04687b96141a34e741a239f3249368a6ed3 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, 16 Sep 2025 20:45:30 +0800 Subject: [PATCH] =?UTF-8?q?09-16-netty=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../org/dromara/websocket/ChatServer.java | 10 ++-- .../dromara/websocket/ChatServerHandler.java | 59 ++++++++++--------- .../websocket/domain/enums/ChatRoomEnum.java | 29 +++++++++ 3 files changed, 66 insertions(+), 32 deletions(-) create mode 100644 xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/domain/enums/ChatRoomEnum.java diff --git a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/ChatServer.java b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/ChatServer.java index b677e1c5..4bbfc9ba 100644 --- a/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/ChatServer.java +++ b/xinnengyuan/ruoyi-modules/ruoyi-system/src/main/java/org/dromara/websocket/ChatServer.java @@ -68,12 +68,12 @@ public class ChatServer { }); log.info("Netty聊天服务器启动,端口:" + port); - bootstrap.bind(port).sync(); -// ChannelFuture future = bootstrap.bind(port).sync(); -// future.channel().closeFuture().sync(); +// bootstrap.bind(port).sync(); + ChannelFuture future = bootstrap.bind(port).sync(); + future.channel().closeFuture().sync(); } finally { -// workerGroup.shutdownGracefully().sync(); -// bossGroup.shutdownGracefully().sync(); + workerGroup.shutdownGracefully().sync(); + bossGroup.shutdownGracefully().sync(); } } 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 6dc795cc..01b43584 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 @@ -21,6 +21,7 @@ import org.dromara.system.service.impl.SysOssServiceImpl; import org.dromara.system.service.impl.SysUserServiceImpl; import org.dromara.websocket.domain.ChatGroup; import org.dromara.websocket.domain.ChatHistory; +import org.dromara.websocket.domain.enums.ChatRoomEnum; import org.dromara.websocket.service.Impl.ChatGroupServiceImpl; import org.dromara.websocket.service.Impl.ChatHistoryServiceImpl; import org.springframework.beans.factory.annotation.Autowired; @@ -154,16 +155,16 @@ public class ChatServerHandler extends SimpleChannelInboundHandler userIds = new ArrayList<>(); - //类型转换 - for (String s : onlineUserList) { - userIds.add(Long.parseLong(s)); - } - List userDTOS = sysUserService.selectListByIds(userIds); - - JSONObject message = new JSONObject(); - message.put("type", "2"); - message.put("users", userDTOS); - channelGroup.writeAndFlush(new TextWebSocketFrame(message.toJSONString())); +// List userIds = new ArrayList<>(); +// //类型转换 +// for (String s : onlineUserList) { +// userIds.add(Long.parseLong(s)); +// } +// List userDTOS = sysUserService.selectListByIds(userIds); +// +// JSONObject message = new JSONObject(); +// message.put("type", "2"); +// message.put("users", userDTOS); +// channelGroup.writeAndFlush(new TextWebSocketFrame(message.toJSONString())); } else { userChannelMap.put(userId, channelHandlerContexts); } @@ -467,13 +470,13 @@ public class ChatServerHandler extends SimpleChannelInboundHandler{ //生成系统消息的聊天记录 - lambdaQueryWrapper.eq(ChatGroup::getMembers,"[99, "+userId+"]"); + lambdaQueryWrapper.eq(ChatGroup::getMembers,"["+ChatRoomEnum.SYSTEM.getRoomId()+", "+userId+"]"); groupServiceOne = chatGroupService.getOne(lambdaQueryWrapper); //如果给成员发送系统消息 而该成员还没有建立过连接从而没有群聊房间 则创建该成员系统消息房间 if (groupServiceOne == null){ groupServiceOne = new ChatGroup(); groupServiceOne.setType(String.valueOf(2)); - groupServiceOne.setMembers("[99, "+userId+"]"); + groupServiceOne.setMembers("["+ChatRoomEnum.SYSTEM.getRoomId()+", "+userId+"]"); groupServiceOne.setLastMessage(message); groupServiceOne.setLastMessageTime(new Date()); // chatGroupService.save(groupServiceOne); @@ -495,13 +498,14 @@ public class ChatServerHandler extends SimpleChannelInboundHandler{ - lambdaQueryWrapper.eq(ChatGroup::getMembers,"[100, "+userId+"]"); +// lambdaQueryWrapper.eq(ChatGroup::getMembers,"[100, "+userId+"]"); + lambdaQueryWrapper.eq(ChatGroup::getMembers,"["+ChatRoomEnum.ATTENDANCE.getRoomId()+", "+userId+"]"); groupServiceOne = chatGroupService.getOne(lambdaQueryWrapper); //如果给成员发送考勤消息 而该成员还没有建立过连接从而没有考勤房间 则创建该成员考勤消息房间 if (groupServiceOne == null){ groupServiceOne = new ChatGroup(); groupServiceOne.setType(String.valueOf(3)); - groupServiceOne.setMembers("[100, "+userId+"]"); + groupServiceOne.setMembers("["+ChatRoomEnum.ATTENDANCE.getRoomId()+", "+userId+"]"); groupServiceOne.setLastMessage(message); groupServiceOne.setLastMessageTime(new Date()); // chatGroupService.save(groupServiceOne); @@ -523,13 +527,13 @@ public class ChatServerHandler extends SimpleChannelInboundHandler{ - lambdaQueryWrapper.eq(ChatGroup::getMembers,"[101, "+userId+"]"); + lambdaQueryWrapper.eq(ChatGroup::getMembers,"["+ChatRoomEnum.SAFE.getRoomId()+", "+userId+"]"); groupServiceOne = chatGroupService.getOne(lambdaQueryWrapper); //如果给成员发送安全消息 而该成员还没有建立过连接从而没有安全消息 则创建该成员安全消息房间 if (groupServiceOne == null){ groupServiceOne = new ChatGroup(); groupServiceOne.setType(String.valueOf(4)); - groupServiceOne.setMembers("[101, "+userId+"]"); + groupServiceOne.setMembers("["+ChatRoomEnum.SAFE.getRoomId()+", "+userId+"]"); groupServiceOne.setLastMessage(message); groupServiceOne.setLastMessageTime(new Date()); // chatGroupService.save(groupServiceOne); @@ -551,13 +555,13 @@ public class ChatServerHandler extends SimpleChannelInboundHandler{ - lambdaQueryWrapper.eq(ChatGroup::getMembers,"[102, "+userId+"]"); + lambdaQueryWrapper.eq(ChatGroup::getMembers,"["+ChatRoomEnum.QUALITY.getRoomId()+", "+userId+"]"); groupServiceOne = chatGroupService.getOne(lambdaQueryWrapper); //如果给成员发送质量消息 而该成员还没有建立过连接从而没有质量消息 则创建该成员质量消息房间 if (groupServiceOne == null){ groupServiceOne = new ChatGroup(); groupServiceOne.setType(String.valueOf(5)); - groupServiceOne.setMembers("[102, "+userId+"]"); + groupServiceOne.setMembers("["+ChatRoomEnum.QUALITY.getRoomId()+", "+userId+"]"); groupServiceOne.setLastMessage(message); groupServiceOne.setLastMessageTime(new Date()); // chatGroupService.save(groupServiceOne); @@ -583,6 +587,7 @@ public class ChatServerHandler extends SimpleChannelInboundHandler