2016-07-28 3 views
0

J'utilise Signalr 2.2 pour envoyer des notifications aux clients javascript via les Hubs. Les clients effectuent des requêtes HTTP sur mon API Web REST (C#) et le serveur my utilise le concentrateur Signlar pour envoyer les mises à jour aux clients.Utiliser signalr pour notifier tous les clients sauf

Je sais qu'il existe un moyen de gérer les clients auxquels les notifications sont envoyées mais pour le moment j'utilise toujours: ~ clients.all ~. Je ne sais pas comment puis-je dire les ID de chaque connexion, où dois-je conserver ces ID et comment les utiliser?

Je l'ai vu dans les messages erlier que ~ ~ clients.Others peuvent être utilisés, mais qui semble être relative à une plus api de Signalr

Merci

Répondre

0

Vous pouvez stocker des informations de connexion dans le dictionnaire statique dans votre classe Hub. Voici l'exemple de code

 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

Quelle est la propriété Clients.Others? Je n'ai pas ça –

+0

Quelle version de Signalr vous utilisez? Voici le guide des appels API Hub http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-server#selectingclients – Paresh

+0

Je thinn j'utilise le plus récent, 2.2 .. une autre question est de savoir comment puis-je dire après la demande Http quel client a fait le reqeust? Je comprends comment obtenir des identifiants de clients lors de la création de connexions, mais plus tard comment puis-je les utiliser? –

1

Cela TRAVAiL

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

Je n'ai pas la classe Context disponible, dans un espace de noms différent ou quelque chose? –