我对 Reactive Stream 有点陌生,所以在使用Spring Webflux和Reactor时遇到了一个问题。
我制作了一个如下所示的片段:
@RestController
public class TestController {
@GetMapping("responsebody/flux")
public Flux<String> tt2() {
return Flux.range(1, 5)
.delayElements(Duration.ofMillis(1000))
.map(l -> "hi");
}
}
Run Code Online (Sandbox Code Playgroud)
而且,有趣的是,镶边分别显示序列中的每个元素,而不是当我仅使用浏览器请求时一次公开所有元素。(但开发工具立即显示全身)
但我想知道,即使 HTTP 1 只使用一个连接,并且服务器发送的数据放在 HTTP 协议的正文中,它是如何工作的。客户端如何知道哪个元素分隔每个元素以及序列何时完成?如果客户端还没有准备好使用反应流怎么办?
我不需要任何使用反应式库的代码,但想知道协议是如何工作的。
http project-reactor reactive-streams reactive spring-webflux