【问题标题】:How to send binary with spring boot websocket?如何使用spring boot websocket发送二进制文件?
【发布时间】:2016-06-07 16:20:07
【问题描述】:

在其他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 类型),我不知道该怎么办...

【问题讨论】:

    标签: java websocket spring-boot


    【解决方案1】:

    您可以使用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();
                }
            }
        }
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-26
      • 1970-01-01
      • 2022-08-02
      • 1970-01-01
      • 2018-06-11
      • 2017-10-31
      • 1970-01-01
      • 2012-03-21
      相关资源
      最近更新 更多