Retrofit은 내부적으로 기본적인 타임아웃 시간을 설정하여 사용하고 있다. 이를 상황에 따라서 변경하고 싶을 때, 아래와 같이 변경하면 된다.
Default
- Connection Timeout : 10초
- Read Timeout : 10초
- Write Timeout : 10초
1) Connection Timeout
요청을 시작한 후 서버와의 TCP Handshake가 완료되기까지 지속되는 시간이다. 즉, Retrofit이 설정된 연결 시간 제한 내에서 서버에 연결할 수 없는 경우 해당 요청을 실패한 것으로 계산한다. 따라서 사용자의 인터넷 연결 상태가 좋지 않을 때 기본 시간 제한인 10초를 더 높은 값으로 설정하면 좋다.
2) Read Timeout
읽기 시간 초과는 연결이 설정되면 모든 바이트가 전송되는 속도를 감시한다. 서버로부터 응답까지의 시간이 읽기 시간 초과보다 크면 요청이 실패로 계산된다.
3) Write Timeout
Read Timeout의 반대 방향이다. 얼마나 빨리 서버에 바이트를 보낼 수 있는지 확인한다.
fun provideOkHttpClientBuilder(): OkHttpClient {
val connectTimeout: Long = 10 * 1000
val readTimeout: Long = 5 * 1000
return OkHttpClient.Builder()
.connectTimeout(connectTimeout, TimeUnit.MILLISECONDS)
.readTimeout(readTimeout, TimeUnit.MILLISECONDS)
.build()
}