使用信号器通知除自身以外的所有客户端
本文关键字:客户端 信号器 通知 | 更新日期: 2023-09-27 17:59:10
我使用Signalr 2.2通过Hubs向javascript客户端发送通知。客户端向我的REST web api(c#)发出HTTP请求,我的服务器使用Signlar Hub向客户端推送更新。
我知道有一种方法可以管理发送通知的客户端,但目前我总是使用:~clients.all~。我不知道如何告诉每个连接的Id,我应该把这些Id放在哪里,以及如何使用它们?
我在erlier的帖子中看到了~clients.Others~可以使用,但这似乎与Signalr的旧api有关
感谢
这将起作用-
Clients.AllExcept(Context.ConnectionId).hello(message);
您可以将连接信息存储在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);
}