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 太长而失败。
我可以看到创建群组的方式为:
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 太长而失败。