2013-08-06 31 views
4

我正在嘗試構建一個聊天引擎,用戶ID由其自動生成的signalR連接ID表示。在頁面刷新時,連接標識在實例化新連接時發生變化。有沒有辦法在瀏覽器會話結束之前(即直到他在客戶端結束他的會話)持久化用戶的連接ID狀態。持久連接ID通過瀏覽器會話使用信號狀態R

任何指南或文檔?這真的會有所幫助。

回答

4

最常見的方法是保持你的中心,其中CustomType有特性的靜態List<CustomType>用戶名和ConnectionId之外

這裏是一個implmentation你可以按照太: http://www.tugberkugurlu.com/archive/mapping-asp-net-signalr-connections-to-real-application-users

我寫我的connectionIds到SignalR.OnConnected事件中的一個sql數據庫,並在SignalR.OnDisconnected事件中刪除它們,你會在你的表中得到一些孤立的連接記錄,這是沒有什麼大不了的,只要確保你有一個created_date列並忽略任何這麼多的連接幾個小時或幾天,取決於您的需求。 SignalR中沒有會話,甚至不嘗試,這是一個已知的問題。爲了讓您的當前用戶,現代開箱即用的Microsoft MVC會員供應商正常工作。但您也可以輕鬆使用cookie來獲取當前用戶的名稱/ ID。

+0

我曾想過使用數據庫來維護連接id的持久性,就像字典一樣。這裏的用戶是額外的代碼和跟蹤狀態,就像一個警戒。什麼觸發ondisconnected方法?它在頁面刷新? –

+0

頁面刷新或關閉瀏覽器都會觸發Signalr OnDisconnected方法 –

+0

您是否弄明白了? –