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?
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%Wenn Sie Ihre connectionId in Ihrer Datenbank speichern, können Sie dies überprüfen:
%Vor%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.
Tags und Links c# asp.net signalr timer signalr-hub