2012-11-01 47 views
0

我正在ASP.NET MVC 3中開發一個社交網絡。每個用戶都必須有能力查看連接的人。用戶關閉瀏覽器而不註銷

這樣做的最好方法是什麼?

我在表Contact在我的數據庫中添加一個標誌,我將它設置爲true當用戶登錄,並當他註銷設置爲false

但這個解決方案的問題是,當用戶關閉瀏覽器而不註銷時,他仍然保持連接。

回答

3

真正知道用戶當前連接的唯一方法是維護用戶和服務器之間的某種連接。立即想到兩個選項:

  1. 使用javascript定期使用ajax調用您的服務器。您的服務器上會有一個用於更新「上次連接時間」狀態的特殊端點,並且您將有第二個端點供用戶輪詢以查看誰在線。
  2. 使用websocket保持與你的服務器

選項1持久連接應該是相當容易實現。最重要的是要記住,這將增加進入服務器的請求數量,並且您必須相應地進行規劃以處理可能產生的流量。您可以通過配置javascript計時器回撥到您的服務器的頻率來控制服務器的負載量。

如果沒有圖書館的支持,選擇2可能會更有意義。當然,還有一些圖書館,如SignalR,這使得這很容易做到。這也會影響網站的性能,因爲每個用戶都將保持持續連接。這種方法的優點是,它減少了選項1所需的輪詢。如果您使用這種方法,則向用戶A推送消息也很容易,即用戶B已脫機。

我想我也應該提到一個非常簡單的第三個選項。如果您覺得您的網站非常具有互動性,那麼您可以跟蹤他們上次向您的網站發出請求的時間。這當然可能不足以確定用戶是否「連接」。

+0

感謝您的回答,對於所有這些細節,選項2似乎是最佳選擇。我會盡力實施它。 – kbaccouche

相關問題