使用signalr通知除自

时间:2016-07-28 20:05:11

标签: c# asp.net-web-api signalr signalr-hub

我使用Signalr 2.2通过集线器向javascript客户端发送通知。客户端向我的REST Web api(c#)发出HTTP请求,我的服务器使用Signlar Hub将更新推送到客户端。

我知道有一种方法可以管理发送通知的客户端,但目前我总是使用:~s clients.all~。我不知道如何判断每个连接的ID,我应该在哪里保留这些ID以及如何使用它们?

我在错误的帖子中看到〜客户。其他〜可以使用,但这似乎与信号器的旧api有关

由于

2 个答案:

答案 0 :(得分:1)

这将有效 -

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

答案 1 :(得分: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);
        }