如何将响应从反应型HTTP客户机流式传输到控制器,而不在任何时候将整个响应主体放在应用程序内存中?
几乎所有project reactor客户机的示例都返回mono
。据我所知,反应流是关于流,而不是加载它,然后发送响应。
是否可以返回flux
,以便在不需要使用大量RAM内存来存储中间结果的情况下,将大文件从某个外部服务传输到应用程序客户机?
它应该通过返回流量
来自然地完成,其中每个whather>将尽快在网络上刷新。在这种情况下,响应使用分块HTTP编码,每个分块的字节一旦被传送到网络就会被丢弃。
另一种可能是将HTTP响应升级到SSE(服务器发送事件),这可以在WebFlux中通过将控制器
方法设置为@getmapping(path=“/stream-flux”,produces=mediatype.text_event_stream_value)
(produces
部分是重要部分)来实现。
我试图使用Spring反应式WebClient将文件上传到Spring控制器。控制器非常简单,看起来像这样: 当我使用这个控制器与cURL一切正常 multipartFile转到正确的参数,其他参数进入Map。 当我尝试从WebClient做同样的事情时,我被卡住了。我的代码如下所示: 这会导致400错误 有人知道如何解决这个问题吗?
我正在开发一个简单的聊天服务,该服务由Spring Boot 2.1.1运行,WebFlux、Reactor 3.2.3、Mongo 3.8.2和Netty 4.1.31。 null 观察似乎很明显,因为当我在测试期间通过SSE连接时,当新事件到达时,它几乎立即更新我--基本上,SSE的响应比每2秒轮询高数百倍。 问题是: 假定客户机最终是订阅者(或者至少我认为它是由有限的知识提供的),我能以某种
问题内容: 我正在尝试编写一个简单的Java http客户端,该客户端仅打印出服务器响应的一行。我的问题是服务器没有响应。这是我所拥有的,正在编译并且没有明显错误地运行,只是在键入主机名(例如“ www.google.com”)后挂起: 有什么建议?请注意,这假设存在一个“ index.html”-即使为true,它仍会挂起。 问题答案: 我认为我可以通过对代码进行少量更改来重现该问题,因此现在它
我有一个react本机应用程序,它使用与。NET Core2.1通信的signalR。 套接字连接没有任何错误。一切都很好。但是服务器不能响应客户端的ping消息,并返回504给客户端。当返回504时,客户端的连接关闭。在hubconnection.onclose()处理。然后客户端需要重新连接。 proxy_read_timeout可以设置为高毫秒。但很乱。 所以我不能在客户机上有效地使用kee
例如,在本文中,我试图理解为什么在流中使用flatmap()(直接从引用中粘贴副本) AFAIK,应用于流的平面图会为流中的每个输入值产生任意数量的值(0... n)。所以一个平面图需要一个产生流的函数。 通量发射0个或多个项目,然后可选地完成或偏离。 那么,响应流上到底发生了什么?这是接收响应流并发出0个或更多类警报对象的函数吗?因此,如果我们
我不知道这里有什么问题。我想发出一个响应二进制数据(例如文件下载)而不是JSON的HTTP请求。 这些行是可以的-但需要JSON。 但我需要将响应定义为不是 JSON。 在这里,我遇到了一个问题。我也尝试了“斑点”。我总是在编译时收到一个类型脚本错误。 类型'{resseType:"string";}'的参数不能分配给类型'{Headers?: HttpHeaders|{[head: string