2012-05-16 89 views
2

我正在尋找一種解決方案來顯示在線用戶/朋友而不使用ajax(實時),如果可能的話。我想避免每隔指定時間間隔後向服務器發出的ajax請求,以檢查用戶是否在線。目前,該應用程序工作正常,並顯示在線用戶,但有很大的要求服務器檢查用戶是否在線使用Ajax方法。同樣由於大量的Ajax調用,瀏覽器行爲也受到影響。 [更多信息:我正在使用MySql數據庫,PHP,JQuery。]是否有可能檢查用戶是否在線而不使用ajax請求?

+0

您將不得不以某種方式尋找更新 - 無論是實時還是刷新頁面。 – GDP

+1

您可以使客戶端連接到使用持久連接的套接字服務器... – Lix

+0

您可以保持一個連接對服務器開放(如Gmail)。但是,來吧,只顯示在線人:阿賈克斯電話是好的。或者創建一個帶有自動刷新值的iframe –

回答

1

我的建議是每次用戶訪問頁面時更新數據庫中的字段。要確定它們是否仍處於聯機狀態,請檢查上次訪問是否在20分鐘前的特定時間間隔內。如果不是,則假定他們處於離線狀態

這可能是最簡單的方法,雖然它不完全是「實時」的。如果我通過關閉瀏覽器離開您的網站,那麼我將不會在20分鐘之後顯示爲「離線」。

+0

請再次看到我的問題。我知道顯示在線用戶的方式,但要檢查上次訪問時間,我必須撥打腳本才能在每個指定時間間隔後獲取上次訪問時間。 –

+0

不可以。我只是在_page load_上檢查上次訪問時間,這意味着不包含AJAX。對於一個非常複雜的問題,這是一個簡單而天真的解決方案。 –

+0

我同意你的觀點,但是每當用戶點擊任何鏈接時,頁面都會被加載。如果頁面沒有刷新/加載,那麼它將如何工作。 –

1

這裏有一個明顯的佔用上,你應該怎麼做:

  • 用戶請求頁面
  • 登錄請求發生的時間(標記用戶爲活動)
  • 獲取好友列表誰活躍在最後< N分鐘
  • 服務於頁

基本上,每個頁面加載refreshe是用戶的「上次看到」時間,並且如果用戶在閾值內,則認爲用戶處於活動狀態。更重要的是,用戶不活動。大多數聊天客戶端在沒有做任何事情15分鐘後將用戶標記爲非活動狀態,例如在我們的情況下進行頁面加載的擊鍵等。

如果你想要實時數據,沒有比使用AJAX(間隔輪詢和連接保持)更好的方法。一些粗俗的技術我使用之前經歷,比AJAX等,以觸發頁面加載包括:

  • 一個隱藏的,不斷清爽iframe或iframe中間隔加載好友列表
  • 爲1x1的間隔加載,緩存搗毀使用路由URL的gif,以便它可以通過日誌記錄機制。

你可以使用WebSockets,但它被跨瀏覽器的這個時間遠遠除非你使用閃光燈和ExternalInterfaceCall的插座能力從Flash調用JS。

1

以某種方式或其他方式,您必須在時間間隔後通過服務器進行ajax調用才能進行通信/獲取在線用戶。