第一,何谓推送技术
随着人们对web越来越熟悉,人们希望web应用可以像本地应用一样可以实时的接收消息,于是也就有了所谓的"推送技术"。也就是我们所说的Server Push,也就是"服务器推技术",它的典型范例就是聊天、消息提醒、交友网站中使用比较频繁,成为实时应用中的一个热点问题。
第二,传统实现(拉取技术)
有一个很类似的实现机制,也就是传统的ajax,它是每隔一段时间去服务端拉取一次信息,但是这种方式会特别消耗资源。它需要时时刻刻去问服务器是否可以请求到数据,而且实时性很差,因为我们通常是过一段时间去请求一次数据的。
第三,另一种实现(推送技术)
显然使用定时拉取的方式是可以的,但是它会特别消耗服务器资源,因此我们需要另一种实现方式,它就是我们所说的推送技术,其实它只是看上去有点像推送技术,它在实质上仍然是一次拉取,只是这次拉取的时间变得很长很长,服务器端可以不断的吐出东西来。
下面是三种常见的实现技术:
(1)ajax长轮询。所谓ajax长轮询,它的本质仍然是一次拉取,它也是一种很不错的push实现方式,它会那种ajax短轮询会减少很多不必要的请求,因此它不论在开销还是在实时性上,都更好一些。它的实现机制是客户端发起一个ajax请求,服务端将请求搁置起来,直到到了超时时间或者说有了数据后返回,而客户端则等待ajax返回后处理数据,然后发起下一个ajax请求。
(2)使用frame长连接。对于框架下的长连接,最大的一个问题就是如果框架在载入,那么浏览器就好像一直显示"载入中",处理问题上不如不适用frame方便。
(3)使用flash或者html5 websocket,不过这两种的支持均不是特别特别靠谱,因为总是面临用户的浏览器不支持的情况,此时我们应该回退到更加兼容和大众的技术上去实现。
(4)使用经典框架,其实我们需要遇到的问题,早就有很多人已经遇到并且解决了,我们首先需要知道的是他们是如何解决这些问题的,然后我们才能提出更优秀的解决方案。
最后,附上ibm的一篇文章,传送门:http://www.ibm.com/developerworks/cn/web/wa-lo-comet/
版权声明:本文为博主原创文章,未经博主允许不得转载。