无法使用 SimpMessagingTemplate 发送二进制数据 (byte[])
Unable to Send Binary Data (byte[]) using SimpMessagingTemplate
我可以使用 SimpMessagingTemplate.convertAndSend() 方法将字符串消息发送到 websocket,但是当我尝试发送 byte[] 时同样不起作用。当我将 byte[] 发送到 websocket 订阅频道时,websocket DISCONNECT 事件被触发并且连接丢失。使用 SimpMessagingTemplate 将 byte[] 发送到 websocket 的任何想法!!!!!
@Autowired
private SimpMessagingTemplate template;
String body = "Message to be Sent";
template.convertAndSend("/channel", body); --------- working
template.convertAndSend("/channel", body.getBytes()); --------- Not working
您是否尝试过将自定义消息转换器添加到 字节数组?。只需覆盖 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;
}
}
我可以使用 SimpMessagingTemplate.convertAndSend() 方法将字符串消息发送到 websocket,但是当我尝试发送 byte[] 时同样不起作用。当我将 byte[] 发送到 websocket 订阅频道时,websocket DISCONNECT 事件被触发并且连接丢失。使用 SimpMessagingTemplate 将 byte[] 发送到 websocket 的任何想法!!!!!
@Autowired
private SimpMessagingTemplate template;
String body = "Message to be Sent";
template.convertAndSend("/channel", body); --------- working
template.convertAndSend("/channel", body.getBytes()); --------- Not working
您是否尝试过将自定义消息转换器添加到 字节数组?。只需覆盖 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;
}
}