OkHttpClient限制连接数?

Ján*_*nos 10 java android okhttp

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

我的应用程序同时启动了许多连接.

loi*_*ieu 12

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

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

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

Dispatcher dispatcher = new Dispatcher();
dispatcher.setMaxRequests(100);
dispatcher.setMaxRequestsPerHost(10);
OkHttpClient client = new OkHttpClient.Builder()
    .dispatcher(dispatcher)
    .build();
Run Code Online (Sandbox Code Playgroud)

  • “请求”和“连接”不一样吗? (2认同)

fra*_*nch -3

您可以尝试通过OkHttpClient.Builder.

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

new OkHttpClient.Builder()
    .connectionPool(cp)
    .build();
Run Code Online (Sandbox Code Playgroud)

  • 第一个参数是 maxIdleConnections。如果keepAlive过期,只有idleConnections会被清除。如果达到最大实时连接数,则无法阻止任何请求。 (7认同)