Zeal Blog - 泽欧里
WWW Zeal Blog
梦想 就像鸡蛋
要么孵化 要么臭掉

Comet: keep-alive Ajax

Posted by zeal on 2006-03-17 19:01 , 1135 characters |  + 2 - 1   English
转载请保留本行原始链接信息 : http://www.zeali.net/entry/343 MADE 1n ZEAL
标签 ( 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 一样得到个响当当的头衔。

This Entry was Last Modified on 2007-05-28 12:11
对于这篇日志有什么看法?我想听听您的高见:
您也可以在页面底部的 Google Friend Connect 工具栏进行评论,体验更好的互动交流 »
首先为了证明您不是没有思想的机器Spammer,请告诉我 4 + 8 =
然后任选以下两种方式之一告诉我您的身份:
1. 使用您的 OpenID
2. 使用传统留言格式
(必填) 名字
如何称呼您?
(选填) URL
在此填写您的 Blog / Homepage 的地址,我将非常乐于访问
(选填) Email
Email地址将在经过防SPAM处理后显示在页面。如果您不希望公开自己的Email,请略过此栏
并写下您的见解:
(由于需要进行SPAM过滤,如果评论提交速度慢请耐心等待)
(所有URL都会加 nofollow 标记,保证不被搜索引擎收录,请SEOers不要白费力气)
记住我?

  如何进行评论                   当有新回复时给我发送邮件通知
除了 <b> 和 <i> 之外,其他的HTML标签都将从您的评论中去除. URL 或 Email 地址会被自动加上链接.
当您点击发表或者预览之后,系统会自动保存您此次评论的内容,以便当网络原因发表失败时直接按Ctrl-V重新粘贴上次评论内容。
注意:快捷键及自动拷贝功能仅对IE浏览器有效。
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 的測試
 里,居也。——《说文》    里,邑也。——《尔雅》。李注:“居之邑也。”RSS Feed (Entries) | Back To Home | All Links | zbird.com | 沪ICP备05024379号