2017-02-17 222 views
1

OkHttpClient是否可以限制实时连接的数量?因此,如果达到限制,没有新的连接被挑选和建立?OkHttpClient连接数量限制?

我的应用程序在同一时间启动多个连接。

回答

0

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

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

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

第一个参数是maxIdleConnections。如果keepAlive过期,只有idleConnections会被清除。如果达到max live连接,则无法阻止任何请求。 –

0

连接数是可配置的Dispatcher,而不是在连接池,只允许配置最大空闲连接和保持活动的功能。

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

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

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