尝试在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中的组中添加客户端但不工作的主要内容,如果未能解决你的问题,请参考以下文章

SignalR Redis 背板组同步

将用户添加到 django 中的组

Drupal Group模块,以编程方式将用户添加到具有特定角色的组中

如何在 C# 中将字符串中的所有内容捕获到单独的组中? [复制]

如何从 JSPlumb 中的组中删除项目?

用R中的组中的非NA字符替换一组值的NA [重复]