首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >来自具有Spring/Project reactor的HTTP客户端的流响应

问来自具有Spring/Project reactor的HTTP客户端的流响应
EN

Stack Overflow用户
提问于 2018-12-03 18:38:02
回答 2查看 594关注 0票数 1

如何在应用程序内存中不包含整个响应正文的情况下,随时将响应从响应式HTTP客户端流式传输到控制器?

实际上,项目反应器客户端的所有示例都返回Mono<T>。据我所知,反应式流是关于流的,而不是加载所有内容然后发送响应。

有没有可能返回某种类型的Flux<Byte>,使得从一些外部服务向应用程序客户端传输大文件成为可能,而不需要使用大量的内存来存储中间结果?

EN

回答 2

Stack Overflow用户

发布于 2018-12-10 21:56:53

这应该通过简单地返回一个Flux<WHATEVER>来完成,其中每个内容都将尽快刷新到网络上。在这种情况下,响应使用分块HTTP编码,并且每个分块中的字节一旦被传输到网络就会被丢弃。

另一种可能是将HTTP response升级为SSE (服务器发送的事件),这可以在WebFlux中通过将Controller方法设置为类似@GetMapping(path = "/stream-flux", produces = MediaType.TEXT_EVENT_STREAM_VALUE) ( produces部分是重要的部分)来实现。

票数 0
EN

Stack Overflow用户

发布于 2018-12-20 16:49:40

我不认为在你的场景中你需要创建一个事件流,因为事件流更多的是用来实时发出事件,我认为你最好这样做。

代码语言:javascript
复制
@GetMapping(value = "bytes")
public Flux<Byte> getBytes(){
    return byteService.getBytes();
}

你可以给它发送一个流。如果您仍然希望将其作为流

代码语言:javascript
复制
@GetMapping(value = "bytes",produces = MediaType.TEXT_EVENT_STREAM_VALUE)
public Flux<List<Byte>> getBytes(){
    return byteService.getBytes();
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53592011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档