使用信号通知除自我以外的所有客户端
问题描述:
我使用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);
}
答
这将与工作
Clients.AllExcept(Context.ConnectionId).hello(message);
+0
我没有可用的Context类,is它在不同的命名空间或东西? –
什么是Clients.Others财产?我没有那个 –
你正在使用哪个版本的Signalr?这里是Hub API调用指南http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-server#selectingclients – Paresh
我瘦了我使用了最新的2.2 ..还有一个问题是我怎么能告诉Http请求哪个客户端请求了reqeust?我知道如何在创建连接时获取客户端ID,但后来我该如何使用它们? –