2、WEB客户端与服务端信息交互的几种方式
1)、Flash XMLSocketc)、因为是使用套接口,需要设置一个通信端口,防火墙、代理服务器也可能对非 HTTP 通道端口进行限制;
详见:http://en.wikipedia.org/wiki/Java_applet#Disadvantages
a)、基于 AJAX 的长轮询(long-polling)方式
示例图:
存在问题就是IE不支持ajax的readystate状态为3的时候读取数据,IE只有在AJAX的readystate请求状态为4的时候才能够读取服务端返回的数据;FF支持;
b)、基于 Iframe 及 htmlfile 的流(streaming)方式
示例图:
使用“htmlfile“的 ActiveX 组件,解决IE的加载显示问题;
浏览器兼容性比较好,Google Talk是基于这种方式实现的;
还是存在从客户端往服务端发消息时,需要提交新的请求;
4)、HTML5中的WebSocket
3、WebSocket
1)、WebSocket介绍WebSocket Hybi草案12的地址:http://tools.ietf.org/html/draft-ietf-hybi-thewebsocketprotocol-12,可以以此为入口访问其它的草案。
c)、不用频率创建TCP请求及销毁请求,减少网络带宽资源的占用,同时也节省服务器资源;
b)、草案版本06到现在最新的草案17,介绍参见文章:http://blog.csdn.net/fenglibing/article/details/6852497
参见:http://blog.csdn.net/fenglibing/article/details/7100070
WebSocket使用标准的80及443端口,这两个都是防火墙友好协议,Web Sockets使用HTTP Upgrade机制升级到Web Socket协议。HTML5 Web Sockets有着兼容HTTP的握手机制,因此HTTP服务器可以与WebSocket服务器共享默认的HTTP与HTTPS端(80和443)。
关于代理详细参见:http://www.infoq.com/cn/articles/Web-Sockets-Proxy-Servers
7)、使用示例展示
WebSocket经由浏览器本身实现后,在Web端的实现就非常的简单,只需要简单初使化一个WebSocket组件,并且增加onopen、onmessage、onclose等事件的处理即可,以下是一个用于初使化WebSocket连接(WEB端JS实现)的源码截图展示:
这一个截图展示的在不支持WebSocket的浏览器,使用Comet针对不同的浏览器进行的组件初使化处理操作:
下面这个图展示的是使用WebSocket与不使用WebSocket发送消息的代码及逻辑差异,其中画红线的部份为使用WebSocket发送消息的实现,只有一行代码,而余下的代码,则是针对不支持WebSocket浏览器发送消息的代码
本文出自:http://blog.csdn.net/fenglibing/article/details/7108982