web 实时推送技术

    转载:https://mp.weixin.qq.com/s/FSWVR2iYrsM0-vxXD9m5RA

  • HTTP协议

HTTP协议为web客户端和服务器之间交互的基于文本的应用级协议。HTTP协议有一个缺陷:通信只能由客户端发起,做不到服务器主动推送数据给客户端。这种单项请求的特点,这种单向请求的特点注定了如果服务器有连续的状态变化,客户端获知会非常麻烦。

在webSocket协议之前,有三种实现双向通信的方式:轮询(polling)、长轮询(long-polling)、和iframe流(streaming)。

1、轮询(polling)

轮询是在特定的时间间隔内(5s),由浏览器发送请求到服务器,服务器将最新内容返回给客户端。

优点:实现简单,无需做过多更改。

缺点:

1、浏览器需要频繁地向服务器发送请求,http请求可能包含很长的头部,真正有用的是其中一小部分,会很浪费带宽资源;

2、轮询时间过长,会导致客户端不能及时收到最新内容;

3、轮询时间过短,导致服务器查询请求过多,增加服务器负担;

比较新的技术去做轮询的是Comet,它是基于HTTP长连接的“服务器推”技术,与传统轮询的不同之处在于,服务器会阻塞请求直到有新数据或超时才返回。Comet包括基于AJAX的长轮询(long-polling)和iframe流(streaming)。

2、长轮询(long-polling)

长轮询是对轮询的改进版,客户端发送请求给服务器,服务器会判断是否有新数据,如果有新数据就返回给客户端,客户端再次发送请求给服务器,如果没有新数据,服务器会一直等待直到有新数据或超时才返回。在某种程度上减少了网络带宽和cpu利用率的问题,但和轮询一样会有带宽和cpu浪费问题。

优点:比 Polling 做了优化,有较好的时效性

缺点:保持连接会消耗资源

3、iframe流(streaming)

iframe流方式是在页面上插入一个隐藏的iframe,利用src属性再服务器和客户端之前创建一个长连接,服务器向iframe传输数据(通常是html,内有插入信息的javascript),来实时更新页面。

优点:消息能够实时到达,浏览器兼容好;

缺点:服务器维护一个长连接会增加开销;IE、chrome、Fixfox会显示加载没有完成,图标会不停旋转。

4、webSocket

webSocket是一种在单个TCP连接上进行的全双工通信协议,允许服务器主动想客户端推送数据。在webSocket API中,浏览器和服务器只需要完成一次握手,两者直接就可以创建持久性连接,并进行双向数据传输。

优点:1、支持双向通信,实时性更强;

           2、可以发送文本,也可以发送二进制数据;

           3、减少通信量:只要建立起webSocket连接,就希望一直保持连接状态。和http相比,不但每次连接时的总开销减少,而且头部信息小,通信量也相应减少;

缺点:1、浏览器支持程度不一样

           2、不支持断开重连

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值