2012-11-08 56 views
1

我必須實現聊天室和該房間中的用戶列表。 我會用mysql + memcache來做到這一點。 當用戶進入或離開房間時,會更新房間內的用戶數組。 但是,我們已經自動註銷該網站上,所以不活躍用戶登錄時,他們處於非活動狀態30分鐘,這是現在一個問題:聊天室在線用戶列表執行

我不能刷新室的用戶列表中,因爲我不不知道,什麼時候發生自動註冊。 我們沒有用於註銷非活動用戶的腳本。在主要的在線列表中,它們如下所示: SELECT * FROM users WHERE last_fresh> 1352415100 我們的在線列表不顯示用戶在30分鐘以內不活動,但我無法存儲和更新last_fresh時間每次在房間中的用戶陣列,當該房間中的每個用戶刷新頁面時。

我該怎麼做?

回答

0

取決於您是否要推或拉更改。推送始終是首選,但會採用nginx-push-module或其他服務器端技術。拉動確實更容易,但會造成更多的開銷。

如果您正在拉動,您可以輪詢登錄用戶的列表並根據數據刷新房間列表。更新視圖的ajax調用將完成此操作。看看jQuery或原型。

+0

我想拉列表。我不知道,什麼時候在服務器上刷新該列表。當他們進入房間時,我將用戶添加到列表中,並在他們退出時刪除他們。但是何時刪除用戶,即更改爲已註銷狀態 - 無需退出房間? – heal81

+0

取決於你如何存儲當前用戶?如果使用輪詢,則可以在輪詢時刷新其時間戳,並且僅在<30分鐘前才能獲得刷新的人員。 – Michael

+0

好的,但這樣我必須從數據庫中獲取完整列表。我怎樣才能避免這種情況?我只想獲取更改。謝謝 – heal81