diff --git a/urbanLifelineServ/workcase/src/main/java/org/xyzh/workcase/listener/ChatMessageListener.java b/urbanLifelineServ/workcase/src/main/java/org/xyzh/workcase/listener/ChatMessageListener.java index 3d45502d..1766832b 100644 --- a/urbanLifelineServ/workcase/src/main/java/org/xyzh/workcase/listener/ChatMessageListener.java +++ b/urbanLifelineServ/workcase/src/main/java/org/xyzh/workcase/listener/ChatMessageListener.java @@ -67,6 +67,21 @@ public class ChatMessageListener implements MessageListener { // 转发到聊天室列表订阅者,前端刷新列表状态 messagingTemplate.convertAndSend("/topic/chat/list-update", chatMessage); logger.debug("列表更新已转发到STOMP: /topic/chat/list-update"); + + // 同时转发到对应聊天室频道,确保聊天窗口也能收到消息 + String roomId = chatMessage.getRoomId(); + if (roomId != null && !roomId.isEmpty()) { + // 查询完整的VO数据 + ChatRoomMessageVO messageVO = chatMessageMapper.selectChatMessageVOById(chatMessage.getMessageId()); + if (messageVO != null) { + messagingTemplate.convertAndSend("/topic/chat/" + roomId, messageVO); + logger.debug("列表更新消息同时转发到聊天室: /topic/chat/{}", roomId); + } else { + // 如果查不到VO(可能事务未提交),直接用DTO转发 + logger.warn("未找到消息VO,使用DTO转发: messageId={}", chatMessage.getMessageId()); + messagingTemplate.convertAndSend("/topic/chat/" + roomId, chatMessage); + } + } } } catch (Exception e) { logger.error("处理Redis消息失败", e);