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