OkHttpClient
でライブ接続数を制限することはできますか?したがって、限界に達すると、新しい接続は選択されず確立されません。OkHttpClientは接続の数を制限していますか?
私のアプリは同時に多くの接続を開始します。
OkHttpClient
でライブ接続数を制限することはできますか?したがって、限界に達すると、新しい接続は選択されず確立されません。OkHttpClientは接続の数を制限していますか?
私のアプリは同時に多くの接続を開始します。
OkHttpClient.Builder
にConnectionPoolを設定すると、アイドル状態のネットワーク接続の最大数を設定できます。
int maxConnections = 5;
int keepAliveDuration = 15000;
ConnectionPool cp = new ConnectionPool(maxConnections, keepAliveDuration, TimeUnit.MILLISECONDS);
new OkHttpClient.Builder()
.connectionPool(cp)
.build();
接続の数だけではなく、最大アイドル状態の接続を設定し、生きている機能を維持することができますのConnectionPoolに、Dispatcherで設定可能です。
ディスパッチャでは、ホストごとの接続数と最大接続数を設定できます。デフォルトはホストごとに5、合計で64です。これはHTTP/1では低いと思われますが、複数の要求を1つの接続に送信できるため、HTTP/2を使用すると問題ありません。
次の手順を実行し、ディスパッチャを設定するには:
Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequests(100);
dispatcher.setMaxRequestsPerHost(10);
OkHttpClient client = new OkHttpClient.Builder()
.dispatcher(dispatcher)
.build();
最初の引数はmaxIdleConnectionsです。 keepAliveが期限切れの場合、idleConnectionsだけがクリアされます。最大ライブ接続に達すると、要求をブロックする方法はありません。 –