作者StubbornLin (Victor)
看板Ajax
標題[問題] 關於這樣的ajax技術
時間Tue Jul 28 01:13:05 2009
最近我需要寫到一些即時性的ajax程式
一個簡易的線上聊天室,聊天室是即時的東西
有訊息發生時才告訴大家這樣
可是礙於http都是一個request結束這樣
就算keep-alive也是被動的
沒辦法由server主動告知client
所以最直觀的方法就是不停的問
可能幾秒就問一次server
但是我很擔心server的負載問題
當然一多 每個人都狂問個不停
server就像被request轟炸似的
時間設太短server負載重
時間設太長client端反應慢
我一直一來有想到一個辦法
不過我不知道可不可行
也不知道這樣的技術該用什麼名自稱乎
我是這樣想的,server在收到client的http request之後
先不急著送response給client 在timeout之前
假設 30秒好了,在這段期間內就等等看有沒有事件發生
例如有使用者說話了 一但這事情發生了
就把事件寫到response 傳回給client
大概的概念像這樣
無事件發生
○ ------------------------------------------- ●
等待開始 timeout
發生事件,回傳response
○ ------------------- ●
等待開始 timeout
如此一來,原本的request轟炸,改成這種事件觸發的方式 應該可以更有效率吧?
我一直覺得gmail或其它東西可能都有在用這樣的技術
只是我沒研究,也沒有接觸過或看過類似的東西
所以我想請問一下這樣的技術可行嗎? 如果已經有人在用了
那這樣的技術又叫什麼名字?
--
哇咧咧 創意投票系統
http://walele.com
易記學 程式設計教學
http://ez2learn.com/
易記學 程式設計討論區
http://forum.ez2learn.com
VICTOR's 個人Blog
http://blog.ez2learn.com/
財報分析王
http://victorlin.serveftp.org/stock/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.170.90.54
2F:→ StubbornLin:感謝 07/28 01:48
3F:→ StubbornLin:這個方法最大的問題在server端 07/28 01:50
4F:→ StubbornLin:像apache那種worker pool的模式就不適合這方法 07/28 01:50
5F:→ StubbornLin:我想還沒那麼普及可能是因為常見的server難以配合 07/28 01:51
6F:→ StubbornLin:我打算用Twisted實作就沒這個問題 07/28 01:51
7F:→ StubbornLin:Twisted的非同步方式天生就很適合這樣的方式 07/28 01:51
8F:→ TonyQ:gmail 有用這個技巧 :3 07/28 02:45
9F:推 Kelunyang:server-push? 聽說用flash或銀光可以達到這樣的效果 07/28 12:55
10F:→ Kelunyang:javascript我還想不到該怎麼做@@" 07/28 12:56
11F:→ imagineer:這是在 server 端作,而且有些分享器/firewall對這感冒 07/28 13:08
12F:→ KC73:plurk 應該有用 comet ... 07/28 13:24