我使用Signalr 2.2通过集线器向javascript客户端发送通知。客户端向我的REST Web api(c#)发出HTTP请求,我的服务器使用Signlar Hub将更新推送到客户端。
我知道有一种方法可以管理发送通知的客户端,但目前我总是使用:~s clients.all~。我不知道如何判断每个连接的ID,我应该在哪里保留这些ID以及如何使用它们?
我在错误的帖子中看到〜客户。其他〜可以使用,但这似乎与信号器的旧api有关
由于
答案 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);
}