尝试在SignalR中的组中添加客户端但不工作
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了尝试在SignalR中的组中添加客户端但不工作相关的知识,希望对你有一定的参考价值。
当我尝试与SignalR中的团队合作时,我有些奇怪的事情。我为我的集线器做了一个课程,当我ping所有客户端时,有一个Task工作。我已经完成了两个方法要添加,第二个方法是从组中删除客户端。但是当我尝试在一个组内部建立一个客户端时,没有任何东西可以完成。这是集线器的代码:
public interface IActionClient
{
// User is in front of the cameras
Task HighlightUser(Guid userId);
// When users added or deleted
Task UpdateGame(int gameId);
Task JoinGroupAsync(string groupName);
Task LeaveGroupAsync(string groupName);
}
// possible clients
public enum ClientType
{
Leaderboard,
Dashboard,
Register
}
public class OneHub : Hub<IActionClient>
{
public OneHub()
{
}
public override async Task OnConnectedAsync()
{
await base.OnConnectedAsync();
}
public async Task JoinGroupAsync(string groupName) => await Groups.AddToGroupAsync(Context.ConnectionId, groupName);
public async Task LeaveGroupAsync(string groupName) => await Groups.RemoveFromGroupAsync(Context.ConnectionId, groupName);
// todo : groups
}
当我尝试在组内添加我的客户端时:
// add client to group hub
await _hubClients.Clients.All.JoinGroupAsync(groupName);
答案
我看到他们是一种基于这样的连接ID将用户添加到组的方法
public override Task AddGroupAsync(string connectionId, string groupName)
{
if (connectionId == null)
{
throw new ArgumentNullException(nameof(connectionId));
}
if (groupName == null)
{
throw new ArgumentNullException(nameof(groupName));
}
var connection = _connections[connectionId];
if (connection == null)
{
return Task.CompletedTask;
}
_groups.Add(connection, groupName);
return Task.CompletedTask;
}
参考code
希望它会有所帮助
以上是关于尝试在SignalR中的组中添加客户端但不工作的主要内容,如果未能解决你的问题,请参考以下文章
Drupal Group模块,以编程方式将用户添加到具有特定角色的组中