spring WebClient 如何从使用 http/1.1 的 spring webflux 服务器接收流数据

how spring WebClient can receive stream data from spring webflux server that is using http/1.1

我有一个 spring webFlux 服务器,我还没有为它激活 SSL,它使用 HTTP/1.1 进行请求连接。另一方面,在另一个应用程序中编写了一个 spring WebClient,它可以很好地调用该服务器并接收流数据作为应答。 但问题是我已经读到 http/1.1 协议不是为流式传输而设计的,它用于简单的请求和响应连接,并且可以使用流式传输 HTTP/2。我想知道 spring webclient 如何通过 http/1.1 协议接收流数据?是否有任何其他 webFlux 客户端可以使用其他编程语言在 http 上工作?(除了 RSocket 可以在 TCP、WebSocket 和 UDP 上工作)。

当您正在寻找流式传输和背压支持时,您是对的,HTTP 2.0 更适合。特别是如果是内部通信,并且你可以控制客户端,那么强烈建议使用 HTTP 2.0/RSocket 机制。

问题来了 在HTTP 1.1中,可以通过Chunked Transfer Encoding机制来实现(这是一个标准机制,更多details可以看净)

Chunked transfer encoding is a streaming data transfer mechanism available in version 1.1 of the Hypertext Transfer Protocol (HTTP). In chunked transfer encoding, the data stream is divided into a series of non-overlapping "chunks". The chunks are sent out and received independently of one another. No knowledge of the data stream outside the currently-being-processed chunk is necessary for both the sender and the receiver at any given time.

Spring HTTP 1.1 的 Webflux 实现在机制的实现方面会有细微差别。