fix 修复 websocket 发布全局订阅序列化报错问题
| | |
| | | package com.ruoyi.common.websocket.dto; |
| | | |
| | | import lombok.Builder; |
| | | import lombok.Data; |
| | | |
| | | import java.io.Serial; |
| | |
| | | * |
| | | * @author zendwang |
| | | */ |
| | | @Builder |
| | | @Data |
| | | public class WebSocketMessageDto implements Serializable { |
| | | |
| | |
| | | LoginUser loginUser = (LoginUser) session.getAttributes().get(LOGIN_USER_KEY); |
| | | log.info("PlusWebSocketHandler, 连接:" + session.getId() + ",已收到消息:" + message.getPayload()); |
| | | List<Long> userIds = List.of(loginUser.getUserId()); |
| | | WebSocketMessageDto webSocketMessageDto = WebSocketMessageDto.builder() |
| | | .sessionKeys(userIds).message(message.getPayload()).build(); |
| | | WebSocketMessageDto webSocketMessageDto = new WebSocketMessageDto(); |
| | | webSocketMessageDto.setSessionKeys(userIds); |
| | | webSocketMessageDto.setMessage(message.getPayload()); |
| | | WebSocketUtils.publishMessage(webSocketMessageDto); |
| | | } |
| | | |
| | |
| | | } |
| | | // 不在当前服务内session,发布订阅消息 |
| | | if (CollUtil.isNotEmpty(unsentSessionKeys)) { |
| | | WebSocketMessageDto broadcastMessage = WebSocketMessageDto.builder() |
| | | .message(webSocketMessage.getMessage()).sessionKeys(unsentSessionKeys).build(); |
| | | WebSocketMessageDto broadcastMessage = new WebSocketMessageDto(); |
| | | broadcastMessage.setMessage(webSocketMessage.getMessage()); |
| | | broadcastMessage.setSessionKeys(unsentSessionKeys); |
| | | RedisUtils.publish(WEB_SOCKET_TOPIC, broadcastMessage, consumer -> { |
| | | log.info(" WebSocket发送主题订阅消息topic:{} session keys:{} message:{}", |
| | | WEB_SOCKET_TOPIC, unsentSessionKeys, webSocketMessage.getMessage()); |