【问题标题】:How is HTTP protocol used to implement sending of asynchronous streams of data from HTTP server to client?HTTP协议如何实现从HTTP服务器到客户端的异步数据流发送?
【发布时间】:2018-06-03 15:05:23
【问题描述】:

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

[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 是对服务器和客户端有意义的单个数据对象。

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

【问题讨论】:

    标签: http asynchronous stream http-headers reactive-streams


    【解决方案1】:

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

    header-name:header-value(注释)

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

    传输编码:分块(数据以一系列块的形式发送)

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

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

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

    有关这些标头及其值的完整描述:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-24
      • 2016-02-21
      • 1970-01-01
      相关资源
      最近更新 更多