当我尝试在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);
答案 0 :(得分:0)
我看到他们是这样一种基于用户的连接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
希望这会有所帮助