文章名字虽然叫HTTP:长短链接,但HTTP本身是无状态,无连接的,长短连接属于通信细节,由传输层TCP协议负责建立。
HTTP分为长连接和短连接,其实本质上是TCP连接。TCP连接是一个双向的通道,它可以保持一段时间不关闭,因此TCP连接才有真正的长连接和短连接的说法。
短连接只保持在数据传输过程(请求发起,连接建立,数据返回,连接关闭)。它适用于一些实时数据请求。短连接的流程就是:建立连接->发送数据->断开连接。一次发送之后立即断开连接。
短连接的优点是,存在的连接都是有用的连接,管理起来比较简单。
长连接建立后,在请求关闭连接前客户端与服务端一直保持连接,实质是保持这个通信管道,之后便可以对其进行复用。
长连接并不是永久连接的。如果一段时间内(header内可设置超时时间),这个连接没有HTTP请求发出的话,那么这个长连接就会被断掉。即长时间没有响应,超时会自动断开。
它适用于涉及消息推送,请求频繁的场景(比如一个网页有很多资源)。连接建立后,在该连接下的所有请求都可以重用这个长连接管道,避免了频繁了连接请求,提升了效率。
长连接的优点是,不用重复建立连接关闭连接,但随着客户端连接越来越多,服务端的压力也会越大。
在在HTTP进行request(请求)时,会像服务器发送请求报文,在报文的Header部分,Connection代表支持的链接属性,keep-alive代表支持长链接。
在HTTP进行request(请求)时,因为请求是并行发送,因此可能造成数据乱序问题,但是在服务器进行response(响应)时,会将乱序的request进行校正,会以正确的顺序进行response。