2012-11-23 28 views
3

我正在創建一個Web儀表板,它將顯示我們的測試環境的狀態。可靠地統計到SignalR集線器的客戶端連接數

我使用集線器將瀏覽器連接到服務器,並具有後臺任務來輪詢環境的狀態。如果至少有一個客戶端連接,我只想執行此檢查。

我的樞紐看起來有點像這樣:

public class StatusHub : Hub 
{ 
    private static int connectionCount = 0; 

    public override Task OnConnected() 
    { 
     Interlocked.Increment(ref connectionCount); 
     return base.OnConnected(); 
    } 

    public override Task OnReconnected() 
    { 
     Interlocked.Increment(ref connectionCount); 
     return base.OnReconnected(); 
    } 

    public override Task OnDisconnected() 
    { 
     Interlocked.Decrement(ref connectionCount); 
     return base.OnDisconnected(); 
    } 

    // other useful stuff 
} 

這主要工作,但有時OnConnected叫,但OnDisconnected不是。

一個特定的情況是,如果我打開chrome並輸入頁面的地址,但實際上沒有導航到它。看起來Chrome是預先抓取頁面並連接的,但從不斷開。

所以兩個問題:

  1. 這是一個很好的方法來計算連接(我永遠不會在Web場環境中運行)?
  2. 這些來自Chrome的殭屍連接最終是否會超時(我嘗試將超時設置爲非常低,但仍然沒有斷開連接)?

回答

1

事件總是會發生。如果他們不這樣做,請在github上提供repro步驟的bug。要獲得更準確的號碼,您可以存儲連接ID的哈希集並從中獲取計數。

相關問題