SignalR - Überprüfen, ob ein Benutzer noch verbunden ist

8

Ich habe einen Hub mit einer Methode, die clientseitig heißt. Diese Methode startet einen Timer mit einem Delegaten, der alle 10 Sekunden ausgeführt wird. Da es keinen Sinn macht, diesen Delegaten weiterhin auszuführen, wenn niemand mit dem Hub verbunden ist, möchte ich überprüfen, ob noch Benutzer innerhalb des Delegaten verbunden sind, bevor ich ihn neu plane. Gibt es eine Möglichkeit, dies zu tun?

    
edobry 03.12.2012, 21:31
quelle

3 Antworten

16

Die wahrscheinlich am häufigsten verwendete Lösung besteht darin, eine statische Variable beizubehalten, die derzeit verbundene Benutzer enthält und OnConnect und OnDisconnect überschreibt oder IDisconnect implementiert, je nachdem, welche Version Sie verwenden.

Sie würden so etwas implementieren:

%Vor%     
f0x 03.12.2012, 21:37
quelle
10

Wenn Sie Ihre connectionId in Ihrer Datenbank speichern, können Sie dies überprüfen:

%Vor%     
chemitaxis 18.11.2015 12:28
quelle
1

Von Ссылка

%Vor%

Sie sollten also context.Clients.Count bekommen können.

Dieser Beitrag bezieht sich auch auf das Wiki , das viele gute Informationen enthält. Sie können versuchen, die OnConnected / OnDisconnected Beispiele zu verwenden, um die Benutzer zu verfolgen, und wenn Sie zu Null Benutzer kommen, beenden Sie Ihren Anruf.

    
Tim Hobbs 03.12.2012 21:36
quelle