java - 如何使用 spring boot websocket 发送二进制文件?

标签 java websocket spring-boot

在其他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/

相关文章:

java - 通过 WebSocket 发送时的 ByteBuffer "loses"支持数组

node.js - express-ws如何定期检查自定义事件并自动采取行动

java - 在 Maven 构建中传递 Spring 配置文件

spring-boot - SpringBoot2 + Webflux - WebTestClient 返回 "Content not available yet"

java - 循环,难以理解循环,请帮助初学者

inno-setup - jre 1.6 inno中的检查和进度条

tomcat - 带有 Tomcat 的 VPS 上的 Websockets

java - 在 Spring MVC 配置中将 default-servlet-handler 放在哪里

java - 这种类型的时间复杂度是多少? Java HashMap

java - 读取 Json 对象并将所需值存储在 Map 中