bugfix: sync message reactions via websocket

This commit is contained in:
tim
2026-02-11 20:33:41 +08:00
parent 8d20d8ef67
commit c9c890d034
5 changed files with 256 additions and 15 deletions

View File

@@ -55,8 +55,19 @@ public class NotificationListener {
if (payloadObject instanceof Map) {
Map<String, Object> payloadMap = (Map<String, Object>) payloadObject;
if ("MESSAGE_REACTION".equals(payloadMap.get("eventType"))) {
Object conversationIdObj = payloadMap.get("conversationId");
if (conversationIdObj instanceof Number) {
Long conversationId = ((Number) conversationIdObj).longValue();
String conversationDestination = "/topic/conversation/" + conversationId;
messagingTemplate.convertAndSend(conversationDestination, payloadMap);
log.info("Message reaction broadcasted to destination: {}", conversationDestination);
} else {
log.warn("Missing or invalid conversationId for reaction payload: {}", payloadMap);
}
}
// 处理包含完整对话信息的消息 - 完全复制之前的WebSocket发送逻辑
if (payloadMap.containsKey("message") && payloadMap.containsKey("conversation") && payloadMap.containsKey("senderId")) {
else if (payloadMap.containsKey("message") && payloadMap.containsKey("conversation") && payloadMap.containsKey("senderId")) {
Object messageObj = payloadMap.get("message");
Map<String, Object> conversationInfo = (Map<String, Object>) payloadMap.get("conversation");
Long conversationId = ((Number) conversationInfo.get("id")).longValue();
@@ -111,4 +122,4 @@ public class NotificationListener {
log.error("Failed to process and send message for user {}", username, e);
}
}
}
}