图1.1 传统模型与AJAX模型的对比
AJAX加入了异步运行的通讯框架。
附件: ajax2_thumb.jpg
图1.2 AJAX异步通讯模型
似乎一切都是那么完美,但是实际上AJAX只是实现了单用户的响应回调,与服务器的异步通讯,但是并不能反映多用户的协同相应。一个页面中同时存在的多个AJAX的异步很可能让用户修改了没有显示出来的数据,在逻辑上存在数据库事务中“脏读”或者“幻影读”的概念,还没有看到数据,发出下一个请求(当然请求是发送到了别的页面元素,但愿有页面元素中仍然是刷新了未修改的AJAX请求信息。)这些似乎都是AJAX的软肋。而COMET实际上就是解决这些问题的解决框架。
图2.1 AJAX与COMET框架对比
在应用COMET框架的网页中,页面初始化后,会维持一连接,同时监听服务器端的事件信息。服务器通过事件机制来完成对浏览器(也可以是客户端)的“推”机制。
不同客户端同时监听到服务器端的事件,并获得服务器传来的数据,而每一个客户端的请求都变成服务器的事件在网络中进行“广播”。
当然COMET需要基于特定的服务器环境,这也是它与AJAX的很大不同。
网上出现过基于客户端的服务器推技术,实际上都是使用IFRAME,APPLET,FLASH这样的元素实现的长连接,在Comet:基于 HTTP 长连接的“服务器推”技术一文中,IBM工程师对这几者做了相应介绍,有时间的话,可以做几个demo出来与大家交流,但下一篇(COMET彗星(二)基于SERVER PUSH的消息传输)中,还是为大家分析一个基于comet的IM框架。(文/lzlynn )
文章评论(0条评论)
登录后参与讨论