OkHttp 如何调节尝试从 TCP 接收缓冲区读取的频率?

问题描述 投票:0回答:1

我对使用 OkHttp

execute
函数调用 HTTP/1.1 POST 请求的上下文特别感兴趣。

这个问题是我之前的问题“OkHttp readTimeout 启动和停止事件?”的后续问题,Jesse Wilson 回答了这个问题(再次感谢!):

启动事件是应用程序代码尝试从操作系统的 TCP 接收缓冲区获取单个字节。如果不尝试从此缓冲区读取,则不会发生读取超时。

结束事件是向应用程序返回 1 个或更多字节(无超时)或超时持续时间已过(超时)。

给出这个答案:假设 1 个或更多字节返回到 OkHttp,但不是完整的响应。是什么决定了 OkHttp next 尝试从 TCP 接收缓冲区读取数据的时间?例如,OkHttp 是立即进行下一次尝试,还是有定时延迟?

okhttp
1个回答
0
投票

OkHttp 每次系统调用最多读取 8 KiB。这是支持 Okio 缓冲区的字节数组的大小。

这 8 KiB 内是 HTTP 元数据(标头、状态代码、分块等)。

它将根据需要进行这些系统调用,由应用程序调用读取响应正文。如果应用层没有读取响应主体,那么 OkHttp 将不会读取入站套接字。

通常应用程序会通过解析响应正文或以其他方式处理它来立即处理此问题。

© www.soinside.com 2019 - 2024. All rights reserved.