OkHttpClient 限制连接数?

2022-09-03 06:03:35

是否可以限制实时连接的数量?那么,如果达到限制,则不会选择并建立新的连接?OkHttpClient

我的应用同时启动多个连接。


答案 1

连接数可在调度程序中配置,而不是在仅允许配置最大空闲连接数和保持活动状态功能的连接池中配置。

调度程序允许按主机配置连接数和最大连接数,默认值为每个主机 5 个,总共 64 个。对于HTTP / 1来说,这似乎很低,但是如果您使用HTTP / 2,则可以这样做,因为可以将多个请求发送到一个连接。

要配置调度程序,请按照下列步骤操作:

Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequests(100);
dispatcher.setMaxRequestsPerHost(10);
OkHttpClient client = new OkHttpClient.Builder()
    .dispatcher(dispatcher)
    .build();

答案 2

您可以尝试通过在 上设置连接池来配置空闲网络连接的最大数量。OkHttpClient.Builder

int maxConnections = 5;
int keepAliveDuration = 15000;
ConnectionPool cp = new ConnectionPool(maxConnections, keepAliveDuration, TimeUnit.MILLISECONDS);

new OkHttpClient.Builder()
    .connectionPool(cp)
    .build();

推荐