尝试在SignalR中将客户端添加到组中,但无法正常工作。

6

当我尝试在SignalR中使用群组时,出现了一些奇怪的问题。我为我的Hub编写了一个类,其中包含一个任务,该任务在我向所有客户端发送ping时工作。我已经创建了两种方法,一种是将客户端添加到群组,另一种是将客户端从群组中删除。但是,当我尝试将客户端添加到群组时,什么也没有完成。

这是Hub的代码:

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);
1个回答

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;
    }

参考 代码

希望能帮到你


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接