【问题标题】:Adding all connected clients of a user to a group将用户的所有连接客户端添加到组
【发布时间】:2016-08-09 20:01:47
【问题描述】:

我需要将用户的所有连接客户端添加到组中。 现在我知道这段代码是将当前 clientid 添加到组中的代码:

public void JoinGroup(string groupName)
{
    this.Groups.Add(this.Context.ConnectionId, groupName);
}

在我的情况下,我有用户的用户 ID,我的要求是找到该用户的所有连接,以便我可以将所有这些连接添加到我想要的组中。你能帮我做同样的事情吗?

【问题讨论】:

    标签: c# asp.net signalr


    【解决方案1】:

    我会这样实现它: 成功登录后,客户端将重新建立与 Hub 的连接并传递用户 ID。 集线器用户将被添加到相关组。 例如假设您使用 ajax 发送登录请求

    function login() {
    
    $.connection.hub.stop(); 
    
    var data = {
        UN: $('#tBxUN').val(),
        PW: $('#tBxPW').val(),
    
    };
    $.ajax({
        type: 'POST',
        url: '/api/Auth/login',
        contentType: 'application/json; charset=utf-8',
        data: JSON.stringify(data),
        success: funcSuccess,
        error: funcFail,
    });
    

    在成功登录的情况下获取用户名作为响应,(或在发送登录请求时将用户名保存在本地变量中)。

     function funcSuccess(response) {
        if (response != "login failed") {
            $.connection.hub.start();
            $.connection.hub.start().done(function () {
                // Call server method to add to group. 
                conn.server.addToGroup(response);
        }
    };
    function funcFail() {
        alert("LogIn Failed")
    };};
    

    在 Hub 上我会有这样的东西

    Public Sub addToGroup(ByVal UserName As String)
        Dim connId = Context.ConnectionId
        Dim UN = UserName
        Dim Grp = "MyGroup"
        If UN = "xxx" Then
            Groups.Add(connId, Grp)
        End If
    End Sub
    

    【讨论】:

      猜你喜欢
      • 2017-10-17
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 2015-08-22
      • 2016-03-01
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多