作者alfadick (悟道修行者)
看板Ajax
标题[问题] 实做聊天室 get userlist every 1 second
时间Mon Jul 18 18:19:05 2011
请问如何每隔一秒, 自动用 Ajax 侦测目前在线人次?
因为有些人离线可能是因为网路突然断掉害的,
如果是用 onunload 之後丢个 send() 叫 php 清 session,
就没办法避免这种状况了。
所以得用使用者固定丢某种讯息告诉 server "我还在" 才行
请问有什麽想法吗?
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.167.0.97
1F:推 s25g5d4:定时ajax阿... 07/18 18:24
2F:→ alfadick:这样讲怎麽可能懂 :p 07/18 19:23
3F:推 UniFish:setInterval....我和一楼同样的想法...只没想到你不知道XD 07/18 20:14
4F:→ s25g5d4:不过每秒一次太频繁了 07/18 20:47
5F:→ s25g5d4:其实聊天室不一定要即时显示谁还在线上阿... 07/18 20:58
6F:→ s25g5d4:像我挂在freenode IRC上 ping Timeout都240秒左右 07/18 20:58
7F:→ alfadick:我有用 setInterval, 里面有蕴含更深的逻辑问题阿... 07/18 22:11
8F:推 s25g5d4:愿闻其详? 07/18 22:13
9F:→ alfadick:yap, 你没有提到 timestamp 这个字? 莫非你是用别种方法? 07/19 10:12
10F:→ alfadick:如果你是用 timestamp, 你指讲个定时 ajax,或者setInterl 07/19 10:13
11F:→ alfadick:我怎麽可能懂?如果你是讲别的, 愿闻其详。 07/19 10:13
12F:推 shadowjohn:其实不用太频凡的更新使用者列表,5~10秒一次就行了 07/19 10:28
13F:→ shadowjohn:然後在1~5秒内,让使用者自动回应自己还在,就可以统计 07/19 10:29
14F:→ alfadick:请问一下, Javascript 好像没办法同时执行两个函式? 07/19 11:10
15F:→ alfadick:我把聊天室的 说话/得到对话/得到使用者列表 写在一起 07/19 11:11
16F:→ alfadick:侦测到 Enter 的时候用 Ajax 丢对话给 say.php 07/19 11:12
17F:→ alfadick:body onload 的时候用 setInterval, 400毫秒 07/19 11:12
18F:→ alfadick:那麽, 如果我要 5 秒去读使用者列表, 好像没办法再去触发 07/19 11:12
19F:→ alfadick:如果秒数一样是400毫秒, 还可以写在setInterval的函式中 07/19 11:13
20F:→ alfadick:注:setInterval的参数是读取使用者对话的函式 07/19 11:14
21F:推 shadowjohn:不要用setInterval啦 我都用setTimeout 07/19 13:39