2017-02-17 225 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();