我需要将用户的所有连接客户端添加到组中。 现在我知道这个代码是将当前的clientid添加到一个组:
public void JoinGroup(string groupName)
{
this.Groups.Add(this.Context.ConnectionId, groupName);
}
在我的情况下,我有用户的用户ID,我的要求是找到该用户的所有连接,以便我可以将所有这些连接添加到我想要的组。你能帮我做同样的事吗?
答案 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