在其他spring平台,我使用websocket发送二进制消息,像这样:
ByteBuffer bf = ByteBuffer.wrap(bytes);
old.getBasicRemote().sendBinary(bf);
但是使用 spring-boot,我让我的类扩展了 TextWebSocketHandler。但是在handleTextMessage(WebSocketSession session, TextMessage message)
方法中,只有参数WebSocketSession,没有发送二进制的方法。
我尝试使用 BinaryMessage,像这样:
session.sendMessage(new BinaryMessage(bytes));
但是客户端得到的结果是Blob(js类型),我不知道该怎么办...
最佳答案
您可以使用BinaryWebSocketHandler 来处理二进制消息通信。
完整示例
@Configuration
@EnableAutoConfiguration
@EnableWebSocket
public class AppWebSocket {
public static void main(String[] args) {
SpringApplication.run(AppWebSocket.class, args);
}
@Component
public static class MyWebSocketConfigurer implements WebSocketConfigurer {
@Override
public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
registry.addHandler(new MyTextHandler(), "/text").withSockJS();
registry.addHandler(new MyBinaryHandler(), "/binary").withSockJS();
}
}
@Component
public static class MyTextHandler extends TextWebSocketHandler {
public void handleTextMessage(WebSocketSession session, TextMessage message) throws Exception {
session.sendMessage(new TextMessage("hello world"));
}
}
@Component
public static class MyBinaryHandler extends BinaryWebSocketHandler {
public void handleBinaryMessage(WebSocketSession session, BinaryMessage message) {
try {
session.sendMessage(new BinaryMessage("hello world".getBytes()));
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
关于java - 如何使用 spring boot websocket 发送二进制文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35618039/