@ZEAL Blog·厉
WWW Zeal Blog
We stand alone,
TOGETHER.

Comet: keep-alive Ajax

Posted by zeal on 2006-03-17 19:01 , 1135 characters |  + 2 - 1   English
转载请保留本行原始出处声明信息 : http://www.zeali.net/entry/343 MaDe1nZEAL
标签 ( WebDev ):  , 

  我在之前的日志里面提到:“当这种冗余的数据传输变得相当频繁的时候(比如我之前所做的即时比分系统为了让浏览器第一时间得到最新的比分变化XML数据必须以2、3秒一次的频率不停的刷新这个XML地址,或者类似的一些即时证券股票交易系统),由此所造成的网络带宽的无畏消耗会变得相当惊人。”

  对于这个问题,临时性的解决方法是采取各种手段(压缩XML数据、采用YAML格式、优化 Http Header)减少数据传输量。但从根本上来说,只有让数据按需传输,才会使流量最小化。本来计划设计实现基于 server-push + Ajax 版本的即时数据分发系统,因为种种原因完全搁置了起来。现在 Alex 给它取了个名字叫 Comet ,并详细的描述了这个名词所代表的内容。

  意料之中的,不少人对这个新名词嗤之以鼻。但在我看来,即便这个 Comet 是一个卫浴清洁剂品牌,至少是对现有技术的归纳总结,跟别人介绍的时候也免得大费口舌。就像 Ajax 一样,虽然只是几样老技术的综合体,之前也有不少人已经在用着这些技术;但只有在 Ajax 这个名词流行起来之后,才真正得到了大规模的应用,各种基于 Ajax 的 frameworks 才争相出炉。对于后进的开发者来说,有了 Ajax 这么一面大旗指路,就意味着少走一大段别人走过的路。

  所以,不管这个架构最终会以什么外貌风行,姑且就叫做 Comet 。 Comet 实际上就是在传统的(这个词对于 Ajax 不知道是否合适) timely client-side pulling Ajax 基础上引入 server-side push 机制,在客户端(通常是 Browser )与服务器之间建立 long-lived 连接, server根据需要把数据主动的 push 到客户端。要做到这一点最简单的可以利用 HTTP 协议的 Keep-Alive 头,但如果要能很好的支持大并发量、方便的实现业务逻辑扩展,就不太可能基于传统的 Web server 来实现服务端的程序,只有重新设计 server 。

  正如 Ajax 风行之前已经有许多开发者在利用 XMLHttpRequest 来实现着自己的应用一样,有着 Comet 概念的产品目前也并不算少:LightstreamICEfaces这样的商业化产品;Pushlets这样的开源项目。相信在一段时间的技术沉淀之后, push style Ajax 会像当初的 Ajax 一样得到个响当当的头衔。

Last Modified on 2007-05-28 12:11
4 条评论:
- kauu () (link) 于 2006-06-07 22:18
你好,我想了解一下”即时比分系统“是怎样实现的,请指教一下。babatu@gmail.com
- zeal (link) 于 2006-06-08 09:59
实现原理和Gmail之类的应用一样,都是通过XMLHTTPRequest+javascript进行定时的数据抓取,得到新的数据就显示到叶面上。当然对于及时比分来讲,你要么有足够的人手来维护这些变化的比分数据,要么可以无耻的去抓取别人的比分数据。实现技术很简单,关键在于后面的比分发布速度上。
http://www.showgoal.com/ , http://www.spbo.com/ , http://www.gooooal.com/ 都是类似的比分网站,你可以去看看。
- Henry () 于 2006-12-26 16:47
我想请问一下如何在page和server之间建立这种long-lived连接,如何实现server-push呢?当然是除了 Keep-Alive 头之外的方法。谢谢!
- LUKE (link) 于 2007-04-06 04:01
觀迎到 HTTP://rd-program.blogspot.com 看看我對COMET 的測試
日志存档
2014年
2013年
2012年
2011年
2010年
2009年
2008年
2007年
2006年
本 Blog 原创内容
遵循以下授权:

Creative Commons
(创作共用) CC

署名-非商业性
-相同方式分享
ZEAL Blog 基于
Powered byPivot - 1.24.1: 'Arcee'
Pivot1.24.1
开发
系统部署于
Linode.com
Launched @
2005-04-27
Since 2005.04.27  梦想 就像鸡蛋 要么孵化 要么臭掉RSS Feed (Entries) | About me | Back To Home | @ZEAL | zbird.com | 沪ICP备05024379号