作者giive (lala)
看板Ruby
标题 Comet For Ruby on Rails and Mongrel
时间Sun Nov 5 13:07:05 2006
本文有图片,请到下面位址观看
http://lightyror.blogspot.com/2006/11/comet-for-ruby-on-rails-and-mongrel.html
Comet 这个词出自於 Dojo 作者 Alex Russell ,简单来说就是让 Browser 跟 Server 作一个长时间不断线的连线,然後我们要在 Web 撰写 Rich Client 的程式就相当的容易。有人推测这可能是一个超越 AJAX 的技术。
这跟一般常用的 AJAX Polling 作法有相当的不同。Polling 简单来说就是每过一段时间,去问 Server 有没有变化,这个作法的好处是不更改现行的 Web Server 架构即可做到,缺点是会造成 Server 跟频宽相当大的负担。
至於 Comet 的目的是让 Client Server 保持连线,Server 状态一有改变,就传一份给 Client。作法有 HTTP_Streaming、Server Push,HTTP Streaming 我还没有 survey ,不过 Server Push 技术根据 vogod 的文章里面讲到的
这个方法一开始还是由client先对server建立连线,但是server在建立起连线後,
送出的header中要把content-type设为” multipart/x-mixed-replace”,意思是
server之後要分好几次送出许多片段资料,请client保持连线不要中断,并且把每次
拿到的新片段取代之前的旧片段。接着,client就只要在这条保持不断的HTTP连线上
等着收server送过来的资料就好了。
Comet 的好处是不用像 Polling 一样耗费太多不必要的频宽,坏处是 Server 架构要修改,Browser 部份因为 IE 不下载完成就不显示,必须使用 iframe 或是 Flash 来帮忙做到抓取即时资料的任务。在目前来说,因为缺乏 Server 大环境的支援,短期内大流行的机率不高。目前已经有 Lightstreamer 的即时财经讯息,感觉很不错。
介绍完 Comet 了之後,你认为这还只是构想而已吗?我发现到 Ruby on Rails 社群对於 Comet 是相当接受,现在已经有 Comet 的 Plugin : Juggernaut 。这个 Plugin 附带了一个用 Ruby 写的 Push Web Server,在 Browser 端使用 Flash 6 来接收 Server Push 过来的资料,可以说是实做相当的完整。这里也有一份简介。另外也有人写了一份拥有 Comet 功能的 Mongrel 。看到这边,已经很兴奋了。我们可以使用 Juggernaut 的 Flash 6 Client ,然後 Server 端使用 Reverse Proxy 转到 Mongrel Cluster当作 Web Server ,这样环境架设问题似乎都解决了。
仔细看看这种作法, Reverse Proxy + Mongrel Cluster 几乎也是 Ruby on Rails 社群的标准作法,不论速度或是稳定度都表现都相当不错。而且这种搭配方式可以用最少的伺服器转换成本(不用改写 Apache 或 Lighttpd),达成 Comet 的目标。Comet On Rails 已经不是只闻楼梯响的阶段了,只要 Comet Mongrel 进入 Stable 阶段,随时可以商业化。
--
lighty RoR 是一个介绍 lighttpd , SQLite , Ruby and Rails 的 Blog
http://lightyror.blogspot.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 61.230.115.203
※ 编辑: giive 来自: 61.230.115.203 (11/05 13:07)
※ 编辑: giive 来自: 61.230.115.203 (11/05 13:47)