Comet For Ruby on Rails and Mongrel
本文有圖片,請到下面位址觀看
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)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章