java - spring WebClient 如何从使用 http/1.1 的 spring webflux 服务器接收流数据
问题描述
我有一个 spring webFlux 服务器,我还没有为它激活 SSL,它使用 HTTP/1.1 进行请求连接。另一方面,在另一个应用程序中编写了一个spring WebClient,它可以很好地调用这个服务器并接收流数据作为答案。但问题是我已经读过 http/1.1 协议不是为流式设计的,它用于简单的请求和响应连接,并且可以使用流式 HTTP/2。我想知道 spring webclient 如何通过 http/1.1 协议接收流数据?是否有任何其他 webFlux 客户端可以在其他编程语言中通过 http 工作?(除了在 TCP、WebSocket 和 UDP 上工作的 RSocket 之外)。
解决方案
当您正在寻找流式传输和背压支持时,您是对的,HTTP 2.0 更适合。特别是如果它用于内部通信并且您可以控制客户端,那么强烈建议使用 HTTP 2.0/RSocket 机制。
提问 在HTTP 1.1中,可以通过Chunked Transfer Encoding机制来实现(这是标准机制,更多细节可以上网查看)
分块传输编码是超文本传输协议 (HTTP) 版本 1.1 中可用的流式数据传输机制。在分块传输编码中,数据流被分成一系列不重叠的“块”。这些块彼此独立地发送和接收。在任何给定时间,发送者和接收者都不需要知道当前正在处理的块之外的数据流。
HTTP 1.1 的 Spring Webflux 实现在机制实现方面会有细微差别。
推荐阅读
- event-sourcing - 事件溯源 - 提供给命令的数据和保存在事件中的数据
- json - 如何在 JSON 数据的索引中获取所有可用的 JSON 数据
- python - Python 3.8.5 不会将特定的字符串值分配为字典键
- masstransit - 在 UseConsumeFilter 之后 MassTransit.dll 中的 NullReferenceException
- json - SWIFT:尝试解码 JSON,它返回 nil
- python - 如何用python绘制混淆矩阵
- swift - 由于 base64 编码的 aesKey 和 aesIV,CryptoSwift 抛出 invalidKeySize
- c# - 了解内存数据库的 Dispose 方法
- java - java - 如何在不删除空格的情况下在java中使用replaceAll?
- c# - blazor 服务器应用程序中的发布(创建记录)webapi 问题