【问题标题】:Unable to Send Binary Data (byte[]) using SimpMessagingTemplate无法使用 SimpMessagingTemplate 发送二进制数据 (byte[])
【发布时间】:2021-01-02 01:49:14
【问题描述】:

我可以使用 SimpMessagingTemplate.convertAndSend() 方法向 websocket 发送字符串消息,但是当我尝试发送 byte[] 时同样无法正常工作。当我将 byte[] 发送到 websocket 订阅通道时,websocket DISCONNECT 事件被触发并且连接丢失。使用 SimpMessagingTemplate 将字节 [] 发送到 websocket 的任何想法!!!!!

@Autowired
private SimpMessagingTemplate template;

String body = "Message to be Sent";

template.convertAndSend("/channel", body);   --------- working

template.convertAndSend("/channel", body.getBytes());   --------- Not working

【问题讨论】:

    标签: java websocket spring-websocket stomp java-websocket


    【解决方案1】:

    您是否尝试将自定义消息转换器添加到 字节数组?。只需覆盖 configureMessageConverters 方法。

    @Configuration
    public class WebSocketSecurityConfig extends AbstractSecurityWebSocketMessageBrokerConfigurer {
    
        @Override
        protected void configureInbound(MessageSecurityMetadataSourceRegistry messages) {
            messages.simpTypeMatchers(
                    SimpMessageType.DISCONNECT, SimpMessageType.OTHER).permitAll();
            messages.anyMessage().authenticated();
        }
    
        @Override
        public boolean configureMessageConverters(List<MessageConverter> messageConverters) {
            messageConverters.add(new ByteArrayMessageConverter());
            return false;
        }
    
        @Override
        protected boolean sameOriginDisabled() {
            return true;
        }
    }
    

    【讨论】:

    • 添加上述方法后尝试。能够将 byte[] 发送到 UI 并使用 "message.binaryData" 之类的方法进行显示。但是 byte[] 数据不匹配。 byte[] mismatch 可能是什么问题?
    猜你喜欢
    • 2012-11-16
    • 1970-01-01
    • 1970-01-01
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 2017-01-27
    • 2016-03-07
    • 1970-01-01
    相关资源
    最近更新 更多