최근 http 스터디를 진행하면서 정리했던 OkHttp1.0 동작 흐름도를 공유드리고자 합니다.

오늘날 OkHttp는 안드로이드에서 주로 Http Client로 사용하고 있는 오픈소스입니다. Client가 어떻게 동작 할지를 전반적으로 살펴보고자 할 때 참고하시면 좋을 것 같습니다. 이미지가 작게 나오는 경우 새탭에서 열기로 봐주세요! :pray:

동작 흐름도

동작 흐름도

조건

  • 디버깅 학습에는 OkHttp1.0을 사용했습니다. (초기 버전으로 비교적 구성이 단순하기 때문에 선택했습니다. package depth가 간단했음.)
  • GET method를 사용해 데이터를 가져오는 과정을 중심으로 정리했습니다.

특이사항

  • 1.0 특성상 생각보다 많은 버그가 있었습니다. 대표적으로는 cache-control헤더를 이용한 클라이언트 캐시 컨트롤과 connection pool이 제대로 동작하지 않았습니다.
  • PUT, POST method 같이 body write를 하는 경우 동작 순서가 조금 다를 수 있습니다.
  • SoketOutputStream을 통해 데이터를 쓰는 시점은 Nagle’s algorithm과 관련이 있습니다. 그럼으로 위 흐름도와 다르게 동작할 수도 있습니다. 이 부분은 다음 포스트에서 깊게 다루도록 하겠습니다.

Comments