websocket、短连接长连接以及轮询简介

附上一篇参考文章:https://www.zhihu.com/question/20215561

1.  短连接
http 1.0中:HTTP客户端与服务器请求响应模式如下图所示;短连接
三次握手,每次都需要授权等信息,一次request,一次response以后关闭连接




2 .长连接
HTTP 1.1规定了默认保持长连接(HTTP persistent connection ,也有翻译为持久连接),数据传输完成了保持TCP连接不断开(不发RST包、不四次握手),等待在同域名下继续用这个通道传输数据;相反的就是短连接。开启长连接使用就是header投中的keep-alive属性

三次握手,当经过第一次授权后,发起一次request,回复一次response,保持连接keep-alive的时间,这期间内可以发起多次通信,时间到达后关闭连接,需要注意的是每次发起一次通信后,keep-alive的时间会重新计时;   
说明:Keep-Alive功能使客户端到服务器端的连接持续有效,当出现对服务器的后继请求时,Keep-Alive功能避免了建立或者重新建立连接。


3.心跳、轮询、长轮询

3.1 心跳机制: 

心跳机制的原理很简单:客户端每隔N秒向服务端发送一个心跳消息,服务端收到心跳消息后,回复同样的心跳消息给客户端。如果服务端或客户端在M秒(M>N)内都没有收到包括心跳消息在内的任何消息,即心跳超时,我们就认为目标TCP连接已经断开了。

3.2 轮询: 

短轮询:浏览器发起一个“询问”请求,服务器无论有无新数据,都立即响应(有就返回新数据,没有就返回一个表示’空’的自定义数据格式),一个HTTP连接结束。 

3.3长轮询:长轮询的经典实现 —— Comet:基于 HTTP 长连接的“服务器推”技术 

浏览器发起一个“询问”请求,当没有新数据时,服务器端并不立即响应,而是等待数据,当有新数据产生时,才向浏览器响应,一个HTTP连接结束。

   3.3 补充: 当服务端没有数据更新的时候,连接会保持一段时间周期知道数据或者状态改变或者过期,依次减少无效的客户端和服务端的交互
   3.3 补充: 当服务端数据变更频繁的话,这种机制和定时轮询毫无区别




4.WebSocket模式客户端与服务器请求响应模式如下图:
一次握手:通信一次后记录授权信息,服务器端可以主动多次发送消息


总结:长短连接和轮询都是服务器端被动,只能客户端先发起请求的方式,提现了http协议的被动型;而websocket服务器端可以发送多次消息给客户端
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值