script与Flash的紧密结合,极大增强了客户端的处理能力。Flash播从放器V7019开始,已经取消了XMLSocket的端口必须大于1023的限制。Li
ux平台也支持FlashXMLSocket方案。但此方案的缺点在于:1客户端必须安装Flash播放器;2因为XMLSocket没有HTTP隧道功能,XMLSocket类不能自动穿过防火墙;3因为是使用套接口,需要设置一个通信端口,防火墙、代理服务器也可能对非HTTP通道端口进行限制;不过这种方案在一些网络聊天室,网络互动游戏中已得到广泛使用。JavaApplet套接口在客户端使用JavaApplet,通过java
etSocket或java
etDatagramSocket或java
etMulticastSocket建立与服务器端的套接口连接,从而实现“服务器推”。这种方案最大的不足在于Javaapplet在收到服务器端返回的信息后,无法通过JavaScript去更新HTML页面的内容。
二、基于HTTP长连接的“服务器推”技术Comet简介浏览器作为Web应用的前台,自身的处理功能比较有限。浏览器的发展需要客户端升级软件,同时由于客户端浏览器软件的多样性,在某种意义上,也影响了浏览器新技术的推广。在Web应用中,浏览器的主要工作是发送请求、解析服务器返回的信息以不同的风格显示。AJAX是浏览器技术发展的成果,通过在浏览器端发送异步请求,提高了单用户操作的响应性。但Web本质上是一个多用户的系统,对任何用户来说,可以认为服务器是另外一个用户。现有AJAX技术的发展并不能解决在一个多用户的Web应用中,将更新的信息实时传送给客户
f端,从而用户可能在“过时”的信息下进行操作。而AJAX的应用又使后台数据更新更加频繁成为可能。
图1传统的Web应用模型与基于AJAX的模型之比较
“服务器推”是一种很早就存在的技术,以前在实现上主要是通过客户端的套接口,或是服务器端的远程调用。因为浏览器技术的发展比较缓慢,没有为“服务器推”的实现提供很好的支持,在纯浏览器的应用中很难有一个完善的方案去实现“服务器推”并用于商业程序。最近几年,因为AJAX技术的普及,以及把IFrame嵌在“htmlfile“的ActiveX组件中可以解决IE的加载显示问题,一些受欢迎的应用如meebo,gmailgtalk在实现中使用了这些新技术;同时“服务器推”在现实应用中确实存在很多需求。因为这些原因,基于纯浏览器的“服务器推”技术开始受到较多关注,AlexRussell(DojoToolkit的项目Lead)称这种基于HTTP长连接、无须在浏览器端安装插件的“服务器推”技术为“Comet”。目前已经出现了一些成熟的Comet应用以及各种开源框架;一些Web服务器如r