okhttpclient - retrofit vs okhttp android
OkHttp/Retrofit tiempo de espera predeterminado (3)
- No debería durar para siempre y no demasiado corto. En mi humilde opinión, debería tener entre 10 y 30 años.
- 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;
}
- 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.
- ¿Cuántos segundos debería usar como tiempo de espera predeterminado?
- ¿Cuál es el tiempo de espera predeterminado para OkHttp / Retrofit, deberíamos dejar los valores predeterminados?
- 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.
- 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;
- 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();
}
}