我正在使用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请求,并且他已经连接并正在侦听主题,因此我将生成报告并发送给他。
有人可以给我任何提示吗?或者我应该怎么做?
预先感谢