Comet (Server Push)

傳統Web的運作方式是建立在client對server的request上。也就是說client不送request,server就沒辦法主動送資料給client。這算是先天上的限制,沒辦法解決。而最近web application的花樣越來越多了,越來越多的網站打著web 2.0的口號,要把人們需要的所有軟體全都搬到web上面來。許多軟體都有即時性的資料更新問題,例如即時通訊、遊戲、股票行情等等,都會有許多資料主動從別的地方往我們送。但傳統的web不允許這種溝通方式,那究竟要怎麼實做這些功能?

最簡單的方法是polling,由client定時去問server有沒有需要更新的資料,理論上只要問得夠頻繁,user感覺起來就會像是即時的更新一樣。但polling會造成很多無謂的網路頻寬浪費,以及server的額外負擔,所以這麼作實在不是個好選擇。

另一個方法是最近開始有要被炒熱跡象的技術: Comet。 但說穿了,Comet其實就是許多年前蠻流行的CGI聊天室所用的Server Push技術。
這個方法一開始還是由client先對server建立連線,但是server在建立起連線後,送出的header中要把content-type設為”multipart/x-mixed-replace”,意思是server之後要分好幾次送出許多片段資料,請client保持連線不要中斷,並且把每次拿到的新片段取代之前的舊片段。接著,client就只要在這條保持不斷的HTTP連線上等著收server送過來的資料就好了。Comet利用這種特性,加上Ajax能在背景讀取server資料更新畫面的能力,變成一個開發rich client非常重要的技術。

但Comet不像Ajax那樣容易可以隨便套用到現成的http server上。它需要server上有適當的程式配合,而現成的open source工具最近才開始慢慢出現,似乎都還不太成氣候,更別提要整合進我慣用的Turbogears中了。

所以呢,我只好從頭開始作輪子了…(待續)

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值