长短轮询与长短连接

短连接

客户端和服务器每进行一次HTTP操作,就建立一次连接,任务结束就中断连接。

长连接

客户端和服务器之间用于传输HTTP数据的TCP连接不会关闭,客户端再次访问这个服务器时,会继续使用这一条已经建立的连接。

HTTP协议的长连接和短连接,实质上是TCP协议的长连接和短连接。

短轮询

浏览器定时向服务器发送请求,看有没有更新的数据,来保持客户端和服务端的同步。

长轮询

长轮询其实 也是客户端请求服务端,但是服务端并不是即时返回,而是当有内容更新的时候才返回内容给客户端,从流程上讲,可以理解为服务器向客户端推送内容;

页面发起一个到服务器的请求,然后服务器一直保持连接打开,直到有数据可以发送。

发送完数据之后,浏览器关闭连接,随即又发送一个到服务器的新请求。这一过程在页面打开期间一直持续不断。(在服务端hold住Http请求(死循环或者sleep等等方式),等到目标时间发生,返回Http响应。

打个比方,短轮询像餐厅的顾客,每隔一会问下饭好了没,长轮询像服务员,一直等在窗口,饭好了才离开,给客户送到后回来继续等下次上菜。

在web开发时经常会遇到实时请求数据的需求,比如聊天功能、投票功能、抢购功能等,实现这些功能常用的技术分别是轮询,长轮询和基于WebSocket协议来实现。

HTTP 协议有一个缺陷:通信只能由客户端发起。这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。虽然轮询可以解决,但频繁的询问会耗费较多资源。

WebSocket

WebSocket 是 HTML5 开始提供的一种在单个 TCP 连接上进行全双工通讯的协议。

允许服务端主动向客户端推送数据。在 WebSocket API 中,浏览器和服务器只需要完成一次握手,两者之间就直接可以创建持久性的连接,并进行双向数据传输。

参考文献:

什么是轮询、长轮询、长连接一篇文章让你不在懵懂 - 第412篇 - 知乎

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值