使用信号通知除自我以外的所有客户端

使用信号通知除自我以外的所有客户端

问题描述:

我使用Signalr 2.2通过集线器发送通知给JavaScript客户端。客户端向我的REST web api(c#)发出HTTP请求,我的服务器使用Signlar Hub将更新推送到客户端。使用信号通知除自我以外的所有客户端

我知道有一种方法可以管理发送通知的客户端,但目前我总是使用〜clients.all〜。我不知道如何告诉每个连接的Id,我应该在哪里存放这些ID以及如何使用它们?

我已经看到了在〜clients.Others〜可以使用,但,这似乎是与Signalr的旧API

感谢

erlier帖子

您可以将连接信息在静态辞典在你的Hub类中。下面是示例代码

 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

什么是Clients.Others财产?我没有那个 –

+0

你正在使用哪个版本的Signalr?这里是Hub API调用指南http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-server#selectingclients – Paresh

+0

我瘦了我使用了最新的2.2 ..还有一个问题是我怎么能告诉Http请求哪个客户端请求了reqeust?我知道如何在创建连接时获取客户端ID,但后来我该如何使用它们? –

这将与工作

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

我没有可用的Context类,is它在不同的命名空间或东西? –