一篇 : 服务器推送技术解析
服务器推送技术解析
1 背景
“服务器推送技术”(Server Pushing)是最近Web技术中最热门的一个流行术语。它是继“Ajax”之后又一个倍受追捧的Web技术。“服务器推送技术”最近的流行跟“Ajax”有着密切的关系。
随着Ajax技术的兴起,让广大开发人员又一次看到了使用浏览器来替代桌面应用的机会,并且这次机会非常大。Ajax将整个页面的刷新变成页面局部的刷新,并且数据的传送是以异步方式进行,这使得网络延迟带来的视觉差异将会消失。
但是,在浏览器中的Ajax应用中存在一个致命的缺陷无法满足传统桌面系统的需求。那就是“服务器发起的消息传递”(Server-Initiated Message Delivery)。在很多的应用当中,服务器软件需要向客户端主动发送消息或信息。因为服务器掌握着系统的主要资源,能够最先获得系统的状态变化和事件的发生。当这些变化发生的时候,服务器需要主动的向客户端实时的发送消息。例如股票的变化。在传统的桌面系统这种需求没有任何问题,因为客户端和服务器之间通常存在着持久的连接,这个连接可以双向传递各种数据。而基于HTTP协议的Web应用却不行。
2 客户端得到通知的方式
图1 传统web访问机制
我们知道,Web的访问机制天生是设计用来pull数据的,如图1,也就是只允许Browser端主动发起请求,server是被动的响应,不允许Server向Browser发出一个connection请求,也就是说没有为server向Browser push数据提供设计实现.虽然没有直接的实现方法,却可以使用一些变通的方式完成类似的功能。
2.1 传统轮询
在Web早期,这一点常使用meta刷新实现。这将自动指示浏览器在指定秒数之后重新装载页面,从而支持简陋的轮询(polling)。例如在HTML文件中加入,实际上就是HTTP头标告知浏览器每12秒更新一次文档。
优点:不需要服务器端的配置。
缺点:
a) 糟糕的用户体验
b) 对服务器的压力很大,并且造成带宽的极大浪费。
2.2 Ajax轮询
Ajax隔一段时间(通常使用JavaScript的setTimeout函数)就去服务器查询是否有改变,从而进行增量式的更新。但是间隔多长时间去查询成了问题,因为性能和即时性造成了严重的反比关系。间隔太短,连续不断的请求会冲垮服务器,间隔太长,务器上的新数据就需要越多的时间才能到达客户机。
优点:
a) 不需要太多服务器端的配置。
b) 降低带宽的负荷(因为服务器返回的不是完整页面)。
缺点:
a) 对服务器的压力并不会有明显的减少。
b) 实时性差,有一定的延迟。
应用:这是一项非常常见的技术,例如,大多数webmail应用程序就是通过这种技术在电子邮件到达时显示电子邮件的。
2.3 Comet
Comet方式通俗的说就是一种长连接机制(long lived http)。同样是由Browser端主动发起请求,但是Server端以一种似乎非常慢的响应方式给出回答。这样在这个期间内,服务器端可以使用同一个connection把要更新的数据主动发送给Browser。因此请求可能等待较长的时间,期间没有任何数据返回,但是一旦有了新的数据,它将立即被发送到客户机。
二篇 : 基于comet服务器推送技术(web实时聊天)
Comet 也称反向 Ajax 或服务器端推技术.其思想很简单:将数据直接从服务器推到浏览器,而不必等到浏览器请求数据。()
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/jisuanjixue/article-85315-1.html