fix 修复 websocket 发布全局订阅序列化报错问题

This commit is contained in:
疯狂的狮子li 2023-03-31 10:30:29 +08:00
parent 2e92773b8c
commit 1dd9a952d5
3 changed files with 6 additions and 6 deletions

View File

@ -1,6 +1,5 @@
package com.ruoyi.common.websocket.dto; package com.ruoyi.common.websocket.dto;
import lombok.Builder;
import lombok.Data; import lombok.Data;
import java.io.Serial; import java.io.Serial;
@ -12,7 +11,6 @@ import java.util.List;
* *
* @author zendwang * @author zendwang
*/ */
@Builder
@Data @Data
public class WebSocketMessageDto implements Serializable { public class WebSocketMessageDto implements Serializable {

View File

@ -42,8 +42,9 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler {
LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY); LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY);
log.info("PlusWebSocketHandler, 连接:" + session.getId() + ",已收到消息:" + message.getPayload()); log.info("PlusWebSocketHandler, 连接:" + session.getId() + ",已收到消息:" + message.getPayload());
List<Long> userIds = List.of(loginUser.getUserId()); List<Long> userIds = List.of(loginUser.getUserId());
WebSocketMessageDto webSocketMessageDto = WebSocketMessageDto.builder() WebSocketMessageDto webSocketMessageDto = new WebSocketMessageDto();
.sessionKeys(userIds).message(message.getPayload()).build(); webSocketMessageDto.setSessionKeys(userIds);
webSocketMessageDto.setMessage(message.getPayload());
WebSocketUtils.publishMessage(webSocketMessageDto); WebSocketUtils.publishMessage(webSocketMessageDto);
} }

View File

@ -67,8 +67,9 @@ public class WebSocketUtils {
} }
// 不在当前服务内session,发布订阅消息 // 不在当前服务内session,发布订阅消息
if (CollUtil.isNotEmpty(unsentSessionKeys)) { if (CollUtil.isNotEmpty(unsentSessionKeys)) {
WebSocketMessageDto broadcastMessage = WebSocketMessageDto.builder() WebSocketMessageDto broadcastMessage = new WebSocketMessageDto();
.message(webSocketMessage.getMessage()).sessionKeys(unsentSessionKeys).build(); broadcastMessage.setMessage(webSocketMessage.getMessage());
broadcastMessage.setSessionKeys(unsentSessionKeys);
RedisUtils.publish(WEB_SOCKET_TOPIC, broadcastMessage, consumer -> { RedisUtils.publish(WEB_SOCKET_TOPIC, broadcastMessage, consumer -> {
log.info(" WebSocket发送主题订阅消息topic:{} session keys:{} message:{}", log.info(" WebSocket发送主题订阅消息topic:{} session keys:{} message:{}",
WEB_SOCKET_TOPIC, unsentSessionKeys, webSocketMessage.getMessage()); WEB_SOCKET_TOPIC, unsentSessionKeys, webSocketMessage.getMessage());