聊天室, 偵測使用者是否在線 - Google

Christine avatar
By Christine
at 2011-07-16T19:27

Table of Contents



hi, 想必大家在寫聊天室的時候, 都會遇到這個問題

用 JavaScript 的 onunload 只要碰到突然離線(ex: 網路線拔掉)就沒用了

如果是寫個程式, 定期(每隔1秒) send HTTP request 給 server 端的程式,

例如每一秒都用 AJAX send "True" 給 server

也就是把每個 user 最後回報的時間更新進 MySQL 裡,

然後就可以偵測, 看哪個使用者超過了 20 秒都沒有回報, 就知道他下線了。

問題來了, 假如使用者離線了, 沒有 php 程式可以運作, 根本沒有辦法

「看看哪個使用者超過了 20 秒都還沒回報」啊!

如果把這個行為, 交給其他還在線上的人, 由他們來執行 php 程式

好像也不太理想, 假設聊天室有一萬位 user 好了,

每隔 1 秒, 就有一萬次的 MySQL query:

"UPDATE users SET whether_login='False' where
last_report_time-NOW()>......" (詳細 syntax 我沒背)

伺服器負荷不會太大嗎?

第二個問題是, 假設整個聊天室就只有你一個人,

結果你家網路線突然被拔掉. 在 MySQL 那裡,

你的 whether_login 欄位還是個 True 呢,

整個聊天室裡也只有你一個人, 你一走,

就沒有人可以幫你把 whether_login 調成 False 了

改天你登入的時候, 因為 whether_login 還是 True,

所以系統認為是重複登入, 不讓你登入了, 那怎麼辦呢?

--
Tags: Google

All Comments

Harry avatar
By Harry
at 2011-07-20T03:53
如果你的資料只存boolean, 那幹嘛不直接判斷timestamp有沒
有更新就好?
Rachel avatar
By Rachel
at 2011-07-24T17:59
恩...我比較笨一點 看不懂 這和Google有關係?
Dora avatar
By Dora
at 2011-07-29T07:33
無關

google +和 FB的比較

Lauren avatar
By Lauren
at 2011-07-16T19:17
最近加入GOOGLE+ 不太清楚GOOGLE+要如何使用 目前是把之前用FB的使用習慣帶著過來 不知道GOOGLE+和FB有什麼共同、及不同點 目前只知道發言可以選擇不同的社交團 另外我想要找類似FB對於一樣主題的粉絲團 不知道有沒有這樣功能 Sparks應該就是這樣子的功能對吧 只是 ...

關於Chrome...

Mia avatar
By Mia
at 2011-07-16T18:31
在下的chrome突然沒辦法下載BT檔案 點下去之後不會出現下載的選項 會直接開一個新的網頁.... 這點相當困擾 請問一下 有解決的辦法嗎? - ...

picasa免費容量不計算的畫素又提昇了?(800->2048)

Andrew avatar
By Andrew
at 2011-07-16T16:46
http://picasa.google.com/support/bin/answer.py?hl=zh_TWandamp;answer=1321133 之前爬文爬到是800畫素(長邊)的照片 是不算容量 但是網址是說2048以內的都不算容量? 是這意思嗎? 剛剛傳了63張1600*1200的上去好 ...

Google地圖帶來了即時交通資訊

Sarah avatar
By Sarah
at 2011-07-16T14:35
Google Maps brings live traffic coverage to 13 European countries, makes work weeks even shorter Google地圖帶來了即時交通資訊涵蓋於13個歐洲國家,使工時更加簡短。 By Amar Toor posted ...

7日鑑賞Google不妥協 北市府:再寬限兩週

Valerie avatar
By Valerie
at 2011-07-16T11:30
[新聞] 7日鑑賞Google不妥協 北市府:再寬限兩週 2011/07/16 網址:http://tw.epochtimes.com/11/7/16/170306.htm 【記者陳瑋臻/台北報導】美商蘋果電腦(Apple)在14日同意定型化契約中,新 增APP應用軟體7天內退費條款,但美商谷歌 ...