2016-07-28 26 views
0

Ich benutze Signalr 2.2, um Benachrichtigungen über Hubs an Javascript-Clients zu senden. Clients stellen HTTP-Anforderungen an meine REST-Web-API (C#) und der my-Server verwendet den Signlar-Hub, um Aktualisierungen an Clients zu senden.Verwenden Sie Signalgeber, um alle Clients außer Self zu benachrichtigen

Ich weiß, es gibt eine Möglichkeit, die Clients zu verwalten, an die die Benachrichtigungen gesendet werden, aber im Moment verwende ich immer: ~ clients.all ~. Ich weiß nicht, wie ich die IDs jeder Verbindung angeben kann, wo sollte ich diese IDs aufbewahren und wie verwende ich sie?

Ich habe in erlier Beiträge gesehen, die ~ ~ clients.Others verwendet werden kann, aber das scheint zu einer älteren api von Signalr

Dank

Antwort

0

Sie speichern kann im statischen Wörterbuch Informationen Verbindung in Bezug zu in deiner Hub-Klasse. Hier ist der Beispielcode

 private static readonly ConcurrentDictionary<string, string> _connections = new ConcurrentDictionary<string, string>(); 

     public void SayHello(string message) 
     { 
      Clients.Others.hello(message); 
     } 

     public override System.Threading.Tasks.Task OnConnected() 
     { 
      _connections.TryAdd(Context.ConnectionId, string.Empty); 
      return base.OnConnected(); 
     } 
     public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled) 
     { 
      string value; 
      _connections.TryRemove(Context.ConnectionId, out value); 
      return base.OnDisconnected(stopCalled); 
     } 
+0

Was Werk wird, ist die Clients.Others Eigenschaft? Ich habe das nicht –

+0

Welche Version von Signalr verwenden Sie? Hier ist die Anleitung zu Hub API-Aufrufe http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-server#selectingclients – Paresh

+0

Ich verdünne ich benutze die neueste, 2.2 .. Eine weitere Frage ist, wie kann ich nach Http-Anfrage sagen, welcher Client den Request gemacht hat? Ich verstehe, wie man beim Erstellen von Verbindungen Client-IDs erhält, aber später, wie kann ich sie verwenden? –

1

Diese

Clients.AllExcept(Context.ConnectionId).hello(message); 
+0

Ich habe die Context-Klasse nicht verfügbar, is es in einem anderen Namensraum oder etwas? –