2016-07-28 62 views
0

我使用Signalr 2.2通過集線器發送通知給JavaScript客戶端。客戶端向我的REST web api(c#)發出HTTP請求,我的服務器使用Signlar Hub將更新推送到客戶端。使用信號通知除自我以外的所有客戶端

我知道有一種方法可以管理髮送通知的客戶端,但目前我總是使用〜clients.all〜。我不知道如何告訴每個連接的Id,我應該在哪裏存放這些ID以及如何使用它們?

我已經看到了在〜clients.Others〜可以使用,但,這似乎是與Signalr的舊API

感謝

erlier帖子

回答

0

您可以將連接信息在靜態辭典在你的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,但後來我該如何使用它們? –

1

這將與工作

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

我沒有可用的Context類,is它在不同的命名空間或東西? –

相關問題