okhttp - 在 okhttp3 中对连接进行广泛的健康检查是必不可少的吗?
问题描述
在 okhttp 中,它对每个请求进行 1 毫秒的连接健康检查。它对我的应用有明显的影响。
这张支票有什么用?是否可以添加配置以禁用检查?
if (doExtensiveChecks) {
try {
int readTimeout = socket.getSoTimeout();
try {
socket.setSoTimeout(1);
if (source.exhausted()) {
return false; // Stream is exhausted; socket is closed.
}
return true;
} finally {
socket.setSoTimeout(readTimeout);
}
} catch (SocketTimeoutException ignored) {
// Read timed out; socket is good.
} catch (IOException e) {
return false; // Couldn't read; socket is closed.
}
}
解决方案
最明显的解决方法是确保您使用的是 HTTP/2,这将跳过套接字上的这项工作并依赖 ping 等。
FWIW 广泛检查基于 HTTP 方法,因此 GET 操作不应该成为问题。
// We need the network to satisfy this request. Possibly for validating a conditional GET.
val doExtensiveHealthChecks = request.method != "GET"
val exchange = transmitter.newExchange(chain, doExtensiveHealthChecks)
这是一个选项吗?
推荐阅读
- javascript - Jquery Remove from onclick inside div
- excel - 基于单元格值显示的 Excel 图像
- php - Centos 6.7 PHP 从 PHP 5.2 升级到 5.6
- excel - VBA用文本值填充可变单元格范围
- android - React Native 调试器:异步存储
- python - 如何同时使用 Selenium 和 Scrapy?
- node.js - (Sequelize) hasOne 关联没有创建外键
- android - 如何使用导航组件打开具有特定片段的另一个活动?
- spring-boot - 不检查请求头参数
- asp.net-mvc - Azure B2C 身份验证在本地重定向,但在 Azure 上托管时不会