【问题标题】:how spring WebClient can receive stream data from spring webflux server that is using http/1.1spring WebClient 如何从使用 http/1.1 的 spring webflux 服务器接收流数据
【发布时间】:2021-03-23 04:01:54
【问题描述】:

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

【问题讨论】:

    标签: java spring http spring-webflux spring-webclient


    【解决方案1】:

    当您正在寻找流式传输和背压支持时,您是对的,HTTP 2.0 更适合。尤其是用于内部通信并且您可以控制客户端的情况下,强烈建议使用 HTTP 2.0/RSocket 机制。

    提问在HTTP 1.1中,可以通过分块传输编码机制来实现(这是标准机制,更多details可以上网查看)

    分块传输编码是超文本传输​​协议 (HTTP) 版本 1.1 中可用的流式数据传输机制。在分块传输编码中,数据流被分成一系列不重叠的“块”。这些块彼此独立地发送和接收。在任何给定时间,发送者和接收者都不需要知道当前正在处理的块之外的数据流。

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

    【讨论】:

    • 所以这是否意味着我们可以使用分块传输编码以任何语言在 http/1.1 上调用 spring web-flux,或者 spring web-flux 使用此编码的自定义实现,并且只有特定的客户端可以调用它?
    • @MinaKh :它应该是任何具有 http 1.1 的客户端(持久连接,保持活动是标准的)。我没有具体验证过。
    猜你喜欢
    • 1970-01-01
    • 2019-05-30
    • 2018-05-09
    • 2017-12-31
    • 1970-01-01
    • 2021-01-15
    • 2023-01-31
    • 2018-09-26
    • 2021-09-10
    相关资源
    最近更新 更多