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

本文关键字:客户端 信号器 通知 | 更新日期: 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);
        }