diff --git a/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/bus/ChatRedisPublisher.java b/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/bus/ChatRedisPublisher.java index ecc9272..bdd0685 100644 --- a/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/bus/ChatRedisPublisher.java +++ b/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/bus/ChatRedisPublisher.java @@ -18,11 +18,11 @@ public class ChatRedisPublisher { private final String nodeId = System.getProperty("node.id", java.lang.management.ManagementFactory.getRuntimeMXBean().getName()); - public void publishToRoom(String roomId, Map payload) { + public void publishToRoom(UUID roomId, Map payload) { try { payload.put("_src", nodeId); // 루프 방지 태그 String json = objectMapper.writeValueAsString(payload); - stringRedisTemplate.convertAndSend(roomId, json); + stringRedisTemplate.convertAndSend(ChatChannels.roomChannel(roomId), json); } catch (Exception ignore) {} } diff --git a/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/controller/ChatMessagingController.java b/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/controller/ChatMessagingController.java index 3ccb006..dd2a35c 100644 --- a/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/controller/ChatMessagingController.java +++ b/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/controller/ChatMessagingController.java @@ -43,22 +43,38 @@ public void send(@DestinationVariable UUID roomId, // 또는 그냥 return; // 조용히 무시하고 싶으면 } + + System.out.println("------------/chat/{roomId}/send 시작 "); + // 안전장치: 메시지의 roomId는 URL의 roomId로 강제 - ChatMessage saved = chatMessageService.saveUserMessage(roomId, userId, req.getContent()); + //ChatMessage saved = chatMessageService.saveUserMessage(roomId, userId, req.getContent()); + +// Map payload = Map.of( +// "id", saved.getId().toString(), +// "chatRoomId", roomId.toString(), +// "type", saved.getMessageType().name(), +// "content", saved.getContent(), +// "userId", userId != null ? userId.toString() : null, +// "createdAt", saved.getCreatedAt().toString() +// ); Map payload = Map.of( - "id", saved.getId().toString(), + "id", 2, "chatRoomId", roomId.toString(), - "type", saved.getMessageType().name(), - "content", saved.getContent(), + "type", "USER", + "content", "웹소켓 테스트", "userId", userId != null ? userId.toString() : null, - "createdAt", saved.getCreatedAt().toString() + "createdAt", "ㅇㅇㅇ" ); + + //System.out.println("------------받은메세지 payload"+payload.get(0).toString()); + System.out.println("------------받은메세지"+req.getContent()); + // ✅ 즉시 현재 노드의 클라이언트에게 전달 - // messagingTemplate.convertAndSend("/topic/chat/" + roomId, payload); + messagingTemplate.convertAndSend("/topic/chat/" + roomId, payload); // ✅ 다른 노드를 위해 Redis로도 전달 - chatRedisPublisher.publishToRoom("/topic/chat/" + roomId, new java.util.HashMap<>(payload)); + chatRedisPublisher.publishToRoom(roomId, new java.util.HashMap<>(payload)); } } diff --git a/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/controller/ChatNotificationController.java b/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/controller/ChatNotificationController.java index 4f64258..d8cc8c4 100644 --- a/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/controller/ChatNotificationController.java +++ b/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/controller/ChatNotificationController.java @@ -50,7 +50,7 @@ public ResponseEntity> roomAlert( "createdAt", saved.getCreatedAt().toString() ); messagingTemplate.convertAndSend("/topic/chat/" + roomId, payload); - // chatRedisPublisher.publishToRoom(roomId, new java.util.HashMap<>(payload)); + chatRedisPublisher.publishToRoom(roomId, new java.util.HashMap<>(payload)); return ResponseEntity.ok(Map.of("ok", true, "id", saved.getId().toString())); } diff --git a/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/service/Impl/ChatNotificationServiceImpl.java b/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/service/Impl/ChatNotificationServiceImpl.java index 3bc2dfd..3a3832a 100644 --- a/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/service/Impl/ChatNotificationServiceImpl.java +++ b/backendProject/src/main/java/likelion/mlb/backendProject/domain/chat/service/Impl/ChatNotificationServiceImpl.java @@ -85,7 +85,7 @@ protected void doDispatch(UUID playerId, "createdAt", saved.getCreatedAt().toString() ); messagingTemplate.convertAndSend("/topic/chat/" + roomId, payload); - // chatRedisPublisher.publishToRoom(roomId, new java.util.HashMap<>(payload)); + chatRedisPublisher.publishToRoom(roomId, new java.util.HashMap<>(payload)); } }