将用户的所有连接客户端添加到组

时间:2016-04-18 07:36:18

标签: c# asp.net signalr

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

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

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

1 个答案:

答案 0 :(得分:0)

我会像这样实现它: 成功登录后,客户端将重新建立与Hub的连接,并将其传递给userID。 中心用户将被添加到相关组。 例如,假设您使用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")
};};

On 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
相关问题