web通讯方案分析

1 方案分析

基于web实现实时地将更新的信息传送到客户端,方案1在浏览器端安装插件,基于套接口传送信息,或是使用 RMI、CORBA 进行远程调用;方案2则无须浏览器安装任何插件、基于 HTTP 长连接;方案3基于HTML5实现客户端和服务器端的双向通信。

1)    基于客户端套接口的"服务器推"技术,这其中又分为两种: Flash XMLSocket、JavaApplet

2)    Comet基于Http长连接的"服务器推"技术,这其中又分为三种,基于Ajax的长轮询方式、基于Ajax的流方式、基于iframe和htmlfile的流方式;

1.1 普通轮询

普通轮询页面定时刷新,或者ajax定时轮询请求,此方案缺点明显不做赘述。

1.2 基于Ajax的长轮询

Ajax调用XMLHttpRequest对象发出异步请求,在Ajax回调函数中处理完服务器端返回的信息后,再次发出请求,重新建立连接。

这种方式服务器端会阻塞请求直到有数据传递或者超时时才返回。服务器端在处理过程中每间隔一定的时间检查是否有更新,如果没有更新,不执行操作.如果有更新,则返回数据,断开连接。客户端处理数据,进行下一轮的连接请求。这种方式是现在最常用的一种方式,web qq、web微信采用此方案。

1.3基于Ajax的流

这种方式在XMLHttpRequest的readyState==3(即数据传送过程中),客户端理数据可以接收并处,而不用关闭连接,服务器端是不停地向客户端发送数据。但是I E中readyState 等于3时不能读取服务器端返回的数据,所以目前IE不支持这种方式(Streaming Ajax)。的

1.4基于iframe和htmlfile的流

这种方式是在页面中嵌入一个隐藏的iframe,让其src属性指向一个长连接,这样服务器端会源源不断地向客户端发送数据,但是它发送的数据是javascript代码,用于操作父级页面的Dom树结构,但是它也存在一个问题,就是IE、FireFox的进度栏总是显示为正在加载状态,而且IE上方的图标会不停地转动,显示正在加载中,Google用了一个"htmlfile"的ActiveX,解决了这个问题,并用到了gmail+gtalk产品中。

1.5FlashXMLSocket

是利用Flash程序中的xmlsocket接口,在客户端程序中用javascript直接调用Flash的接口来实现数据传递。缺点:

1)    客户端必须安装 Flash 播放器;

2)    因为 XMLSocket 没有 HTTP 隧道功能,XMLSocket 类不能自动穿过防火墙;

3)    因为是使用套接口,需要设置一个通信端口,防火墙、代理服务器也可能对非 HTTP 通道端口进行限制;

这种方案在一些网络聊天室,网络互动游戏中已得到广泛使用。

1.6JavaApplet

在客户端建立和服务器端的套接口,但是javascript无法获取JavaApplet在服务器端返回的数据,无法更新页面。

1.7websocket

WebSocket protocol 是HTML5一种新的协议。它实现了浏览器与服务器全双工通信(full-duplex)。优点:性能优势与其他方案,有成熟的方案;缺点:新协议浏览器支持有限,需要与轮询方案结合使用,框架更新较快。

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29160570/viewspace-1759525/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29160570/viewspace-1759525/

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值