Update (2006/11/5) : thegiive 兄也針對 Comet 也做了一番研究。
Update(2007/4/6) : lazy Guy 提出了更深入的觀察跟看法。
Comet 這個名詞是由 Alex Russell (Dojo的開發者) 今年五月所提出,比較熟知的名稱有 HTTP_Streaming、Server Push。讓 Client 瀏覽器與 Server 建立長時間的連線,因此Server可以想傳就傳資料給 Client,不需要 Client 先送 request,Server 才能送資料。
Ajax的作法要更新網頁只有當使用者觸發事件(mouseover或click等)或是利用 Periodic_Refresh 週期更新,Periodic的問題在於不管是否有沒有真的新資訊,就固定幾秒鐘連線,增加不必要的連線與頻寬浪費,不過 Periodic Refresh 仍是現在最普遍沒有問題的作法,符合現存的Web架構。
Comet Demo
- Lightstreamer : 即時財經訊息,真是超炫的… :p
- Meebo : Web IM
幾個困難的地方
- Server 的 scalable 能力! 長時間的連線讓Server負擔大增,現有 web server 的設計並不合用。
- 瀏覽器支援,需用一些 trick,因為在 IE 中沒下載完不能用。所以要用 iframe 或 flash (另開socket) 才能跨平台。see IFrame + Script Tags = Portable Comet
- 可以達到雙向 full duplex 嗎? see Two-Way Web: Can You Stream In Both Directions? 有些討論。
實務上,還不是很成熟可以使用,跑起來問題可能會很多,Client不是網頁標準作法,Server也沒有簡單的支援。定位上我覺得可以作為Ajax的延伸,若配套支援ok,Server部署沒有問題,也許會取代 Ajax 需要 period refresh 的部份,達到更好的使用者體驗。
來我的BLOG 參考COMET相關訊息
rd-program.blogspot.com