我正在尋找一種解決方案來顯示在線用戶/朋友而不使用ajax(實時),如果可能的話。我想避免每隔指定時間間隔後向服務器發出的ajax請求,以檢查用戶是否在線。目前,該應用程序工作正常,並顯示在線用戶,但有很大的要求服務器檢查用戶是否在線使用Ajax方法。同樣由於大量的Ajax調用,瀏覽器行爲也受到影響。 [更多信息:我正在使用MySql數據庫,PHP,JQuery。]是否有可能檢查用戶是否在線而不使用ajax請求?
回答
我的建議是每次用戶訪問頁面時更新數據庫中的字段。要確定它們是否仍處於聯機狀態,請檢查上次訪問是否在20分鐘前的特定時間間隔內。如果不是,則假定他們處於離線狀態
這可能是最簡單的方法,雖然它不完全是「實時」的。如果我通過關閉瀏覽器離開您的網站,那麼我將不會在20分鐘之後顯示爲「離線」。
請再次看到我的問題。我知道顯示在線用戶的方式,但要檢查上次訪問時間,我必須撥打腳本才能在每個指定時間間隔後獲取上次訪問時間。 –
不可以。我只是在_page load_上檢查上次訪問時間,這意味着不包含AJAX。對於一個非常複雜的問題,這是一個簡單而天真的解決方案。 –
我同意你的觀點,但是每當用戶點擊任何鏈接時,頁面都會被加載。如果頁面沒有刷新/加載,那麼它將如何工作。 –
這裏有一個明顯的佔用上,你應該怎麼做:
- 用戶請求頁面
- 登錄請求發生的時間(標記用戶爲活動)
- 獲取好友列表誰活躍在最後< N分鐘
- 服務於頁
基本上,每個頁面加載refreshe是用戶的「上次看到」時間,並且如果用戶在閾值內,則認爲用戶處於活動狀態。更重要的是,用戶不活動。大多數聊天客戶端在沒有做任何事情15分鐘後將用戶標記爲非活動狀態,例如在我們的情況下進行頁面加載的擊鍵等。
如果你想要實時數據,沒有比使用AJAX(間隔輪詢和連接保持)更好的方法。一些粗俗的技術我使用之前經歷,比AJAX等,以觸發頁面加載包括:
- 一個隱藏的,不斷清爽iframe或iframe中間隔加載好友列表
- 爲1x1的間隔加載,緩存搗毀使用路由URL的gif,以便它可以通過日誌記錄機制。
你可以使用WebSockets,但它被跨瀏覽器的這個時間遠遠除非你使用閃光燈和ExternalInterfaceCall
的插座能力從Flash調用JS。
以某種方式或其他方式,您必須在時間間隔後通過服務器進行ajax調用才能進行通信/獲取在線用戶。
- 1. 檢查是否Ajax請求是空
- 2. 檢查請求的用戶是否是django的所有者
- 3. 檢查是否使用AJAX
- 4. Dart如何檢查請求是否是ajax請求
- 5. Ajax檢查用戶名是否存在
- 6. Symfony檢查用戶是否仍在線
- 7. 檢查特定用戶是否在線
- 8. 檢查用戶是否在線
- 9. Instagram API檢查用戶是否在線
- 10. PHP檢查用戶是否在線
- 11. 如何檢查用戶是否在線
- 12. 檢查用戶是否從MySQL在線?
- 13. 檢查請求是否由Ajax發送或不是
- 14. 檢查請求的用戶是否具有管理員權限
- 15. 是否可以使用POST請求而不是GET請求重定向到URL?
- 16. 是否可以檢查是否從IMG標籤發出請求?
- 17. 使Ajax請求遞歸 - 檢查文件是否存在
- 18. 檢查MVC中每個請求上是否存在用戶?
- 19. 檢查用戶名是否可用
- 20. Rails檢測請求是否爲AJAX
- 21. 是否可以檢查用戶是否在建築物內?
- 22. 用戶是否可以修改ajax發佈請求?
- 23. 是否有可能檢測到Java中是否有類可用?
- 24. 是否有可能使用jQuery檢查元素是否是動態創建的?
- 25. 是否有可能重定向頁面,即使有不完整的ajax請求
- 26. 如何檢查是否AJAX請求是由瀏覽器
- 27. 是否可以只使用POST請求?
- 28. 是否有可能使用ngResours查詢
- 29. 檢查用戶名是否存在使用ajax
- 30. 檢查用戶是否是附近路線檢查站與GPS
您將不得不以某種方式尋找更新 - 無論是實時還是刷新頁面。 – GDP
您可以使客戶端連接到使用持久連接的套接字服務器... – Lix
您可以保持一個連接對服務器開放(如Gmail)。但是,來吧,只顯示在線人:阿賈克斯電話是好的。或者創建一個帶有自動刷新值的iframe –