SignalR 从数组创建组

SignalR create groups from an array

我可以看到创建群组的方式为:

public Task CreateGroup(string group)
{
    return Groups.Add(Context.ConnectionId, group);
}

如何为实体 Channel(具有 Id 和 Name 属性)的 Ids 创建组数组,即使我拥有的唯一连接 ID 是 context.ConnectionId
(使用 Task 语法编辑)

如果我有一组组名,我希望能够基于它创建组。像...

public void CreateGroups(string[] groups)
{
    Groups.AddRange(Context.ConnectionId, groups);
}

你可以这样做:

public async Task CreateGroup(string[] groups)
{
    foreach (var group in groups)
    {
        await Groups.Add(Context.ConnectionId, group);
    }
}

但是,将一个客户端添加到多个组时需要注意。在客户端和服务器之间发送组成员身份的方式是 groupsToken,它是一个连接所属的组的加密和编码列表。一旦连接属于多个组,groupsToken 就会变得很长。由于 groupsToken 是在某些操作的查询字符串中发送的(最明显的是重新连接,或者在每个轮询请求的 longPolling 的情况下)如果它变得太长,请求可能会由于 url 太长而失败。