WEB通信之 长连接、长轮询(long polling)

本文详细介绍了HTTP的长连接和长轮询两种技术。长连接通过WebSocket等技术实现实时通信,减少连接建立的延迟。长轮询则是客户端定时发送请求,服务器在有新数据时才响应并关闭连接,降低无效请求。两者各有优缺点,适用于不同的场景。总结了长连接和长轮询的实现原理和适用范围。
摘要由CSDN通过智能技术生成

一、什么是长连接、长轮询?

长连接:基于HTTP的长连接,是一种通过长轮询方式实现”服务器推”的技术,它弥补了HTTP简单的请求应答模式的不足,极大地增强了程序的实时性和交互性。
一般都是用socket实现长连接
http请求一般是短连接:一次请求结束,就会断开与服务器的连接,服务器不能
主动推送数据到客户端,而只能由客户端发起请求。

a) AJAX短连接实现网页聊天
这里写图片描述
常规的短连接模式下,都是通过不间断的刷新请求实现的,比如每隔3s发送一次AJAX请求,3s更新一下数据,然后就这样不间断的刷新下去,直到用户关闭网页。
弊端:如果用户很长时间没有操作,每次刷新都不会返回新数据!


二.长连接方式

它的刷新是根据数据来执行的,如果有新数据返回就接收并解析显示数据。如果一段时间内用户没有操作则连接处于睡眠状态,一直等待用户输入或请求超时,然后发起下一个ajax请求。
这里写图片描述
这样做的好处是,每个消息都会即时推送到客户端,延迟极少;另外每次请求都是有意义的,与短连接对比,效率要高很多。但对于一个用户量很多,并且操作非常频繁的网站,长连接模式也会出现过于频繁的刷新问题。目前IE对于HTTP连接数是有限制的,每个网页只能同时进行两个长连接,第三个长连接会被阻塞。

轮询: 客户端定时向服务器发送AJAX请求。
缺点:请求中大半无用,浪费带宽和服务器资源
优点:后端程序编写比较容易。
实例:适于小型应用。

长轮询:客户端向服务器发送AJAX请求,服务器接到请求后hold住连接
直到有新的信息or新的数据才返回响应信息并关闭连接。客户端处理完再向服务器发送新的请求
优点:在无消息的情况下不会频繁的请求,耗费资源小。
缺点:服务器hold连接会消耗资源,返回数据顺序无保证,难于管理维护。
实例:webqq Facebook IM等

长连接:在页面里嵌入一个隐蔵iframe,将这个隐蔵iframe的src属性设为对一个长连接的请求或是采用xhr请求,服务器端就能源源不断地往客户端输入数据。 (这里其实只是长连接的一种实现方式而已)
优点:消息即时到达,不发无用请求;管理起来也相对方便。
缺点&

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值