mirror of
				https://github.com/dromara/RuoYi-Vue-Plus.git
				synced 2025-11-04 16:23:42 +08:00 
			
		
		
		
	fix 修复 websocket 发布全局订阅序列化报错问题
This commit is contained in:
		@@ -1,6 +1,5 @@
 | 
			
		||||
package com.ruoyi.common.websocket.dto;
 | 
			
		||||
 | 
			
		||||
import lombok.Builder;
 | 
			
		||||
import lombok.Data;
 | 
			
		||||
 | 
			
		||||
import java.io.Serial;
 | 
			
		||||
@@ -12,7 +11,6 @@ import java.util.List;
 | 
			
		||||
 *
 | 
			
		||||
 * @author zendwang
 | 
			
		||||
 */
 | 
			
		||||
@Builder
 | 
			
		||||
@Data
 | 
			
		||||
public class WebSocketMessageDto implements Serializable {
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -42,8 +42,9 @@ public class PlusWebSocketHandler extends AbstractWebSocketHandler {
 | 
			
		||||
        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);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -67,8 +67,9 @@ public class WebSocketUtils {
 | 
			
		||||
        }
 | 
			
		||||
        // 不在当前服务内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());
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user