with okhttpclient library example android timeout httprequest retrofit okhttp

okhttpclient - retrofit vs okhttp android



OkHttp/Retrofit tiempo de espera predeterminado (3)

  1. No debería durar para siempre y no demasiado corto. En mi humilde opinión, debería tener entre 10 y 30 años.
  2. La configuración de tiempo de espera de conexión predeterminada que le proporciona Retrofit (si no ha especificado explícitamente el cliente http) es de 15 segundos.

Fuente:

OkHttpClient defaultClient() { OkHttpClient client = new OkHttpClient(); client.setConnectTimeout(15, TimeUnit.SECONDS); client.setReadTimeout(15, TimeUnit.SECONDS); client.setWriteTimeout(15, TimeUnit.SECONDS); return client; }

  1. Tengo esta sensación de que Google está usando 30 segundos. No es seguro.

Me preguntaba cuántos segundos debería establecer en mi cliente de actualización.

  1. ¿Cuántos segundos debería usar como tiempo de espera predeterminado?
  2. ¿Cuál es el tiempo de espera predeterminado para OkHttp / Retrofit, deberíamos dejar los valores predeterminados?

  1. No hay un valor mágico y depende de las expectativas en su back-end. Si alguien le dice que 5s tiene un buen valor y que tiene un promedio de 8 en uno de sus puntos finales a los tiempos máximos de carga, entonces 8s no está funcionando para usted. Como valores generales, he visto que por debajo de 10s se considera corto y entre 10s y 20s son comunes.
  1. A partir de OkHttp 3.4.1 y Retrofit 2.1.0 , el valor predeterminado para OkHttp es de 10 segundos. Retrofit se basa en el valor predeterminado de OkHttp.

Reemplazo del fragmento de código: (si no proporciona un OkHttpClient):

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

Fragmento de código OkHttp:

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

  1. La única aplicación de Google a la que tengo acceso es la aplicación Google IO .

Están usando diferentes valores. Por ejemplo, para los feedback relacionados que utilizan:

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;

}

Están usando Volley y puedes echar un vistazo a algunos tiempos de espera allí también. Y sí, se ven cortos.

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

En un cliente http diferente, le dan algunas pistas sobre lo que consideran es un corto tiempo de espera corto y razonable.

/** * 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;


Lo estoy usando así en mi RetrofitApiClient. okhttp versión 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(); } }