流数据文件以通过Spring WebSocket下载

时间:2019-12-27 15:12:53

标签: spring-boot spring-websocket

我正在使用Spring WebSocket下载文件,并且正在尝试处理大文件。

实际上,我正在将文件转换为base64并使用SimpMessageSendingOperations进行主题发布,但是问题是文件太大时,我正在尝试对数据文件进行流传输。

messagingTemplate.convertAndSendToUser(purchaseReport.getSessionId(),
                    "/queue/greetings",
                    DATA_APPLICATION_ZIP_BASE_64.concat(
                    getDocumentsAsBase64(fileWriter.write(report).toPath())),
                    createHeaders(purchaseReport.getSessionId()));

我在Stack Overflow上阅读了一些文章和其他问题,但是所有这些文章和其他问题都已经过时了(使用不推荐使用的类),因此没有示例。

我尝试了一些示例,这些示例实现了扩展BinaryWebSocketHandler的处理程序。

@Configuration
@EnableWebSocketMessageBroker
//@EnableWebSocket
//public class WebSocketConfiguration implements WebSocketMessageBrokerConfigurer {
public class WebSocketConfiguration extends AbstractWebSocketMessageBrokerConfigurer implements WebSocketConfigurer {

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/wss").setAllowedOrigins("*").withSockJS();
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry config) {
        config.setApplicationDestinationPrefixes("/app").enableSimpleBroker("/topic/",
                "/exchange/", "/queue/");
    }

    @Override
    public void configureWebSocketTransport(WebSocketTransportRegistration registry) {
        registry.setMessageSizeLimit(50 * 1024 * 1024);
    }

    @Override
    public void registerWebSocketHandlers(WebSocketHandlerRegistry registry) {
        registry.addHandler(new DownloadWebSocketHandler(), "/binary");
    }
}

但是它不起作用,也没有调用处理程序。

流程是:用户将执行一个提供WebSocket sessionId的http请求,并且他已经连接并正在侦听主题,因此我将生成报告并发送给他。

有人可以给我任何提示吗?或者我应该怎么做?

预先感谢

0 个答案:

没有答案