From 1dd9a952d5419072554edaa1b88a532d82be1902 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子li <15040126243@163.com> Date: 星期五, 31 三月 2023 10:30:29 +0800 Subject: [PATCH] fix 修复 websocket 发布全局订阅序列化报错问题 --- ruoyi-common/ruoyi-common-websocket/src/main/java/com/ruoyi/common/websocket/utils/WebSocketUtils.java | 20 ++++++++++---------- 1 files changed, 10 insertions(+), 10 deletions(-) diff --git a/ruoyi-common/ruoyi-common-websocket/src/main/java/com/ruoyi/common/websocket/utils/WebSocketUtils.java b/ruoyi-common/ruoyi-common-websocket/src/main/java/com/ruoyi/common/websocket/utils/WebSocketUtils.java index b92ebc4..b4f181e 100644 --- a/ruoyi-common/ruoyi-common-websocket/src/main/java/com/ruoyi/common/websocket/utils/WebSocketUtils.java +++ b/ruoyi-common/ruoyi-common-websocket/src/main/java/com/ruoyi/common/websocket/utils/WebSocketUtils.java @@ -2,9 +2,7 @@ import cn.hutool.core.collection.CollUtil; import com.ruoyi.common.core.domain.model.LoginUser; -import com.ruoyi.common.json.utils.JsonUtils; import com.ruoyi.common.redis.utils.RedisUtils; -import com.ruoyi.common.satoken.utils.LoginHelper; import com.ruoyi.common.websocket.dto.WebSocketMessageDto; import com.ruoyi.common.websocket.holder.WebSocketSessionHolder; import lombok.AccessLevel; @@ -34,8 +32,9 @@ /** * 鍙戦�佹秷鎭� - * @param sessionKey - * @param message + * + * @param sessionKey session涓婚敭 涓�鑸负鐢ㄦ埛id + * @param message 娑堟伅鏂囨湰 */ public static void sendMessage(Long sessionKey, String message) { WebSocketSession session = WebSocketSessionHolder.getSessions(sessionKey); @@ -45,7 +44,7 @@ /** * 璁㈤槄娑堟伅 * - * @param consumer + * @param consumer 鑷畾涔夊鐞� */ public static void subscribeMessage(Consumer<WebSocketMessageDto> consumer) { RedisUtils.subscribe(WEB_SOCKET_TOPIC, WebSocketMessageDto.class, consumer); @@ -54,12 +53,12 @@ /** * 鍙戝竷璁㈤槄鐨勬秷鎭� * - * @param webSocketMessage + * @param webSocketMessage 娑堟伅瀵硅薄 */ public static void publishMessage(WebSocketMessageDto webSocketMessage) { List<Long> unsentSessionKeys = new ArrayList<>(); // 褰撳墠鏈嶅姟鍐卻ession,鐩存帴鍙戦�佹秷鎭� - for (Long sessionKey: webSocketMessage.getSessionKeys()) { + for (Long sessionKey : webSocketMessage.getSessionKeys()) { if (WebSocketSessionHolder.existSession(sessionKey)) { WebSocketUtils.sendMessage(sessionKey, webSocketMessage.getMessage()); continue; @@ -68,9 +67,10 @@ } // 涓嶅湪褰撳墠鏈嶅姟鍐卻ession,鍙戝竷璁㈤槄娑堟伅 if (CollUtil.isNotEmpty(unsentSessionKeys)) { - WebSocketMessageDto broadcastMessage = WebSocketMessageDto.builder() - .message(webSocketMessage.getMessage()).sessionKeys(unsentSessionKeys).build(); - RedisUtils.publish(WEB_SOCKET_TOPIC, broadcastMessage, consumer -> { + WebSocketMessageDto broadcastMessage = new WebSocketMessageDto(); + broadcastMessage.setMessage(webSocketMessage.getMessage()); + broadcastMessage.setSessionKeys(unsentSessionKeys); + RedisUtils.publish(WEB_SOCKET_TOPIC, broadcastMessage, consumer -> { log.info(" WebSocket鍙戦�佷富棰樿闃呮秷鎭痶opic:{} session keys:{} message:{}", WEB_SOCKET_TOPIC, unsentSessionKeys, webSocketMessage.getMessage()); }); -- Gitblit v1.9.3