本文,主要分析以下几个问题:
- 连接池ConnectionPool的定义及其详解。
- 连接connect复用详解。
- connet清理。
- 访问同一个地址的socket复用详解。
- .服务器重新定位, 包括IP地址重新定位、代理proxy重新定位。也就是如果当集群服务器存在多个代理,代理存在多个IP地址,那么访问一个IP地址失败的话,那么重新定位到另外一台服务器。
- okhttp的连接支持连接保持功能,也就是http1.1 和 http2.0所具有的功能,详解 BridgeInterceptor对requestHeader的处理。
了解以上okhttp的特点,需要通过StreamAlloction、ConnectionPool、RouteSelector、RealConnection等。
总体架构图如下:
源码详解:
okhttp最核心的架构就是拦截链路,其链路串起来了整个okhttp的网络请求,因此connectior的获取等入口在ConnectionInterceptor中。
1、connection 获取入口,ConnectionInterceptor,代码详解如下。
。
2、创建请求流数据,HttpStream。