作者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