2016-07-07 63 views
0

我只有一個客戶端和服務器的簡單演示。我可以來回發送消息,非常微不足道的東西。SignalR - 從最新的Hub上下文發送服務器到客戶端

服務器集線器有一個定時器,它每隔1000毫秒向客戶端發送一條消息。現在我有一個按鈕,在點擊時,發送一條消息到服務器(通過signalR)。

問題: 當點擊按鈕(和消息發送到服務器)時,集線器每次實例化(我讀了關於SignalR生命週期here)。 當然,當Hub被實例化時,Timer也被實例化。所以我看到的副作用(即錯誤)是消息從多個Hub實例發送到客戶端。

我想要的是: 我希望客戶端能夠接收來自Hub上運行的Timer的消息,但只能從一個Hub(最新的Hub實例?)發送一組消息。我不希望從實例化的每個Hub產生的同時/多個消息。

但是也許我在這裏做了一些嚴重錯誤的設計。

回答

1

您不應該在集線器實例中設置計時器,因爲它們是在每個請求上重新創建的。 只需創建一個Singleton類來處理計時器和操作。然後從您的集線器實例訪問該單例。

單例實例將在應用程序的整個生命週期中持續存在,因此您將只創建一個計時器。 爲避免併發問題,您的單身人士應該是Lazy

相關問題