遍历signalR集线器类中的组

问题描述 投票:0回答:2

我如何遍历SignalR组(集线器类)Groups.Add(Context.ConnectionId, "foo");

我将如何遍历该小组以了解谁在其中?然后可能基于其中的connectionId返回一个用户

c# asp.net signalr
2个回答
2
投票

SignalR docs

组未持久保存在服务器上,因此应用程序负责跟踪哪些组中的连接,因此可以实现组计数之类的事情。

因此,您不能遍历组中的用户,您需要自己对此进行跟踪。


1
投票

可能在客户端连接/断开/重新连接时实现字典

public static readonly ConcurrentDictionary<string, object> _connections 
       = new ConcurrentDictionary<string, object>();

public Task Connect()
{
    _connections.TryAdd(Context.ConnectionId, null);
    Groups.Add(Context.ConnectionId, "users");
    //Returns Connection count. 
    return Clients.tally(_connections.Count.ToString());
}

您可以扩展此名称以包括名称或组等,但是就像akoeplinger所说的那样,您必须在整个应用程序中始终对此进行跟踪。

© www.soinside.com 2019 - 2024. All rights reserved.