NSURLSession之使用Keep-Alive长连接

2021-04-19  本文已影响0人  tom__zhu

HTTP Keep-Alive


HTTPKeep-Alive,是HTTP 1.1默认的功能(HTTP 1.0可以在请求头中设置Keep-Alive来显式开启),其表示持久连接,以前我们所使用的HTTP请求,当发出请求并接收完响应后,将关闭TCP连接,所以,如果我们短时间内进行大量的HTTP请求的话,会导致过多的TCP连接建立、关闭消耗.

HTTP Keep-Alive vs TCP KeepAlive


注意,我们目前说的都是HTTPKeep-Alive,其实,TCP也有KeepAlive的概念,它解决的主要问题是,当连接建立后,如果没有数据传输,或者隔一段时间才发送一次数据时,如何来确定Client是否在线,连接是否需要保持,TCP解决方法为,当超过一段时间后,TCP会自动发送一个数据为空的报文给Client,如果对方回应了,则连接继续保持,否则,在重试多次无果后将关闭连接。

Pipeline


HTTP 1.1引入了Pipeline,其基于Keep-Alive,既利用一个连接做多次请求,当Client提交多个请求时,不需要等第一个请求的响应接收完就能发起第二个请求,既实现类似于流水作业的功能。目前主流服务器都支持Keep-AlivePipeline

使用NSURLSession开启Keep-Alive、Pipeline



上一篇下一篇

猜你喜欢

热点阅读