HTTP长连接和短连接

一、概念
HTTP长连接:客户端和服务器建立一次连接之后,可以在这条连接线上进行多次请求/响应操作。一般会设置过期时间,也可以不设置。步骤如下:
连接->数据传输->保持连接(心跳)->数据传输->保持传输(心跳)->…->关闭连接
HTTP短连接:客户端和服务器进行一次HTTP请求/响应之后,就关闭连接。所以一次请求/响应后就需要重新建立连接。步骤如下:
连接->数据传输->关闭连接

二、使用设置
以HTTP/1.1
1、设置短连接

connect:close

2、设置HTTP长连接,有过期时间

Connection:keep-alive 和Keep-Alive: timeout=60

建立长连接,连接时间设置为60s;若60s内仍有接收到数据,则保持连接;若超过60s,则断开连接。
3、设置HTTP长连接,无过期时间

Connection:keep-alive

表明连接永久有效。

三、适应条件
什么时候用长连接,短连接?
长连接多用于点对点操作,操作频率,连接量少的情况。
每个TCP连接都需要三步握手,四次挥手占用时间。

例如:数据库的连接用长连接,
如果用短连接频繁的通信会造成socket错误,而且频繁的socket 创建也是对资源的浪费。

四、心跳包机制
心跳包主要也就是用于长连接的保活和断线处理。它像心跳一样每隔固定时间发一次,以此来告诉服务器。一般的应用下,判定时间在30-40秒比较不错。如果实在要求高,那就在6-9秒。每隔一段时间发送一次。
心跳检测步骤:
1 客户端每隔一个时间间隔发生一个探测包给服务器
2 客户端发包时启动一个超时定时器
3 服务器端接收到检测包,应该回应一个包
4 如果客户机收到服务器的应答包,则说明服务器正常,删除超时定时器
5 如果客户端的超时定时器超时,依然没有收到应答包,则说明服务器挂了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章