OkHttp / Retrofit по умолчанию

Мне было интересно, сколько секунд я должен настроить для моего модифицированного клиента.

  1. Сколько секунд я должен использовать как тайм-аут по умолчанию?
  2. Каков тайм-аут по умолчанию для OkHttp / Retrofit, допустим ли значения по умолчанию?

Solutions Collecting From Web of "OkHttp / Retrofit по умолчанию"

  1. Нет волшебной ценности и зависит от ожиданий на вашем сервере. Если кто-то говорит вам, что 5s является хорошим значением, и вы набираете 8 баллов на одной из ваших конечных точек при максимальном времени загрузки, тогда 8s не работает для вас. Как общие значения, я видел, что ниже 10s считается коротким и между 10 и 20 годами является общим.

  1. Начиная с OkHttp 3.4.1 и Retrofit 2.1.0 , значение по умолчанию для OkHttp составляет 10 секунд. Дооснащение зависит от значения по умолчанию OkHttp.

Код дооснащения кода: (если вы не предоставляете OkHttpClient):

okhttp3.Call.Factory callFactory = this.callFactory; if (callFactory == null) { callFactory = new OkHttpClient(); } 

Отредактированный фрагмент кода OkHttp:

  connectTimeout = 10_000; readTimeout = 10_000; writeTimeout = 10_000; 

  1. Единственное приложение Google, к которому я имею доступ, – это приложение Google IO .

Они используют разные значения. Например, для обратной связи они используют:

 public class FeedbackConstants{ public static final int FEEDBACK_CONNECT_TIMEOUT_MS = 15000; public static final int FEEDBACK_READ_TIMEOUT_MS = 15000; public static final int GOOGLE_API_CLIENT_CONNECTION_TIMEOUT_S = 10; 

}

Они используют Volley, и вы также можете посмотреть некоторые таймауты там. И да, они выглядят короткими.

 /** The default socket timeout in milliseconds */ public static final int DEFAULT_TIMEOUT_MS = 2500; 

В другом http-клиенте они дают вам некоторые подсказки о том, что они считают коротким и разумным коротким таймаутом.

  /** * Default 2s, deliberately short. If you need longer, you should be using * {@link AsyncHttpClient} instead. */ protected int connectionTimeout = 2000; /** * Default 8s, reasonably short if accidentally called from the UI thread. */ protected int readTimeout = 8000; 
  1. Это не должно длиться вечно и не слишком коротко. ИМХО, это должно быть от 10 до 30 лет.
  2. Установка времени установления соединения по умолчанию, установленная Retrofit (если вы явно не указали http-клиент) составляет 15 секунд.

Источник:

 OkHttpClient defaultClient() { OkHttpClient client = new OkHttpClient(); client.setConnectTimeout(15, TimeUnit.SECONDS); client.setReadTimeout(15, TimeUnit.SECONDS); client.setWriteTimeout(15, TimeUnit.SECONDS); return client; } 
  1. Я получаю это чувство, что Google использует 30 секунд. Не уверен.

Я использую его так, как в моем RetrofitApiClient. Okhttp version 3.4.1

 public class RetrofitApiClient { private static OkHttpClient.Builder httpClient = new OkHttpClient.Builder() .connectTimeout(15, TimeUnit.SECONDS) .readTimeout(15L, TimeUnit.SECONDS) .writeTimeout(15L, TimeUnit.SECONDS); public void someMethod() { OkHttpClient client = httpClient.build(); } }