预览加载中,请您耐心等待几秒...
1/6
2/6
3/6
4/6
5/6
6/6

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

Comet 服务器推送技术 背景 “服务器推送技术”(ServerPushing)是最近Web技术中最热门的一个流行术语。它是继“Ajax”之后又一个倍受追捧的Web技术。“服务器推送技术”最近的流行跟“Ajax”有着密切的关系。 随着Ajax技术的兴起,让广大开发人员又一次看到了使用浏览器来替代桌面应用的机会,并且这次机会非常大。Ajax将整个页面的刷新变成页面局部的刷新,并且数据的传送是以异步方式进行,这使得网络延迟带来的视觉差异将会消失。 但是,在浏览器中的Ajax应用中存在一个致命的缺陷无法满足传统桌面系统的需求。那就是“服务器发起的消息传递”(Server-InitiatedMessageDelivery)。在很多的应用当中,服务器软件需要向客户端主动发送消息或信息。因为服务器掌握着系统的主要资源,能够最先获得系统的状态变化和事件的发生。当这些变化发生的时候,服务器需要主动的向客户端实时的发送消息。例如股票的变化。在传统的桌面系统这种需求没有任何问题,因为客户端和服务器之间通常存在着持久的连接,这个连接可以双向传递各种数据。而基于HTTP协议的Web应用却不行。 客户端得到通知的方式 图1传统web访问机制 我们知道,Web的访问机制天生是设计用来pull数据的,如图1,也就是只允许Browser端主动发起请求,server是被动的响应,不允许Server向Browser发出一个connection请求,也就是说没有为server向Browserpush数据提供设计实现.虽然没有直接的实现方法,却可以使用一些变通的方式完成类似的功能。 传统轮询 在Web早期,这一点常使用meta刷新实现。这将自动指示浏览器在指定秒数之后重新装载页面,从而支持简陋的轮询(polling)。例如在HTML文件中加入<METAHTTP-RQUIV="Refresh"CONTENT=12>,实际上就是HTTP头标告知浏览器每12秒更新一次文档。 优点:不需要服务器端的配置。 缺点: 糟糕的用户体验 对服务器的压力很大,并且造成带宽的极大浪费。 Ajax轮询 Ajax隔一段时间(通常使用JavaScript的setTimeout函数)就去服务器查询是否有改变,从而进行增量式的更新。但是间隔多长时间去查询成了问题,因为性能和即时性造成了严重的反比关系。间隔太短,连续不断的请求会冲垮服务器,间隔太长,务器上的新数据就需要越多的时间才能到达客户机。 优点: 不需要太多服务器端的配置。 降低带宽的负荷(因为服务器返回的不是完整页面)。 缺点: 对服务器的压力并不会有明显的减少。 实时性差,有一定的延迟。 应用:这是一项非常常见的技术,例如,大多数webmail应用程序就是通过这种技术在电子邮件到达时显示电子邮件的。 Comet Comet方式通俗的说就是一种长连接机制(longlivedhttp)。同样是由Browser端主动发起请求,但是Server端以一种似乎非常慢的响应方式给出回答。这样在这个期间内,服务器端可以使用同一个connection把要更新的数据主动发送给Browser。因此请求可能等待较长的时间,期间没有任何数据返回,但是一旦有了新的数据,它将立即被发送到客户机。Comet又有很多种实现方式,但是总的来说对Server端的负载都会有增加.虽然对于单位操作来说,每次只需要建议一次connection,但是由于connection是保持较长时间的,对于server端的资源的占用要有所增加。 优点:实时性好(消息延时小);性能好(能支持大量用户) 缺点:长期占用连接,丧失了无状态高并发的特点。 应用:股票系统、实时通讯。 FlashXMLSocket 这种方案实现的基础是:一、Flash提供了XMLSocket类。二、JavaScript和Flash的紧密结合:在JavaScript可以直接调用Flash程序提供的接口。 缺点: 因为XMLSocket没有HTTP隧道功能,XMLSocket类不能自动穿过防火墙; 因为是使用套接口,需要设置一个通信端口,防火墙、代理服务器也可能对非HTTP通道端口进行限制; 应用:网络聊天室,网络互动游戏。 JavaApplet套接口 在客户端使用JavaApplet,通过java.net.Socket或java.net.DatagramSocket或java.net.MulticastSocket建立与服务器端的套接口连接,从而实现“服务器推送”。 缺点:需要客户端安装JAVA虚拟机。 Comet介绍 Comet有时也称反向Ajax或服务器端推技术(server-sidepush)。其思想很简单:将数据直接从服务器推到浏览器,而不必等到浏览器请求数据。听起来简单,但是如果熟悉Web应用程序,尤其是HT