HTTP协议是如何实现从HTTP服务器向客户端发送异步数据流的?

How is HTTP protocol used to implement sending of asynchronous streams of data from HTTP server to client?

流行的HTTP服务器或框架是如何使用HTTP协议实现从HTTP服务器到HTTP客户端的异步数据流的? (客户端可以是浏览器或 non-browser)

[client] ----request for data----> [server]

[client] <-------xxx------[server]
[---delay---]
[client] <-------xxxxxx---[server]
[---delay---]
[client] <-------x--------[server]
[---delay---]
[client] <-------xxx------[server]
[---delay---]
[client] <-------xxxx-----[server]

延迟可以是不确定的

x 表示对服务器和客户端有意义的个人数据 object。

只是强调一下,我不是在寻找流的实现(例如反应流、RxJava 等),而是 我想知道如何使用 HTTP 协议来实现这种异步数据流的详细信息(不是视频流,而是 json 流)。 例如,他们使用哪个 HTTP headers,使用什么样的连接等

基本上,这里感兴趣的 HTTP headers 是:

header-name:header-value(评论)

连接:keep-alive(保持连接打开)

transfer-encoding:分块(数据以一系列块的形式发送)

接受:application/stream+json(或其他类似的流媒体类型)

content-type:application/stream+json(或其他类似的流媒体类型)

此信息是通过观察 postman/curl 之间的 http 流量收集的 和简单的 spring webflux 服务。

有关这些 headers 及其值的完整说明:

https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers