根據the wisdom of StackOverflow,無法列出或檢查連接的客戶端的數量。但是,答覆有點老了,我不知道它是否仍然有效。SignalR中的計數和列表連接器
服務器是否唯一選擇記錄所有連接和斷開連接? 是否至少有一些功能可以幫助我們檢測斷開連接?
根據the wisdom of StackOverflow,無法列出或檢查連接的客戶端的數量。但是,答覆有點老了,我不知道它是否仍然有效。SignalR中的計數和列表連接器
服務器是否唯一選擇記錄所有連接和斷開連接? 是否至少有一些功能可以幫助我們檢測斷開連接?
絕對有一種方法。
許多人通過創建一個包含您定義的任何自定義用戶對象的併發字典的單例類來處理此問題。如果您在連接時將自定義用戶對象添加到此字典中,並在斷開連接時刪除它們,則可以查詢字典中的活動用戶數。請記住,它可能不是第二準確的,因爲即使客戶端不再是因爲他們關閉了他們的瀏覽器,也可能仍然是活動的大約30秒的「中止」窗口。
現在,SignalR中有沒有真正的「硬」功能來爲您做到這一點?不是我意識到的,但我還沒有深入研究2.0。至於檢測斷開連接,它是相當健壯的,如果沒有檢測到連接,它將刪除所述的連接,使您能夠保持斷開連接。
有一位優秀的教程這裏描述這種方法:
所以或多或少我已經顯示的鏈接描述的方式,對不對?我想這足夠了。但我希望有更強大的東西。是否有推薦的專門處理客戶的課程,還是應該自己寫一個? –
不幸的是,我所有的研究都沒有透露任何可以直接從庫中使用的內置工具。我鏈接的教程可能是更標準的方法之一,利用單例模式來保存您的字典實例。我自己在生產中使用它,並且它挺好。 ConcurrentDictionary保持事物線程安全 –