将SignalR用户映射到组中的连接

本文关键字:连接 SignalR 用户 映射 | 更新日期: 2023-09-27 18:18:31

如何使用userId从组中添加/删除用户

Groups.Add(userid,"groupName")
我在数据库中使用的

而不是使用connectionId

Groups.Add(connectionId,"groupName")

我创建了一个像这样的映射!使用用户ID提供程序方法,我可以这样做

Clients.Users(userId).sendMessage("asa")

,

Groups.Add(userid,"groupName")

它不工作。那么我如何使Groups.Add(userid,"groupName")工作呢?是否有我不知道的特殊映射或者我用错了这个?

将SignalR用户映射到组中的连接

不能将userId添加到组中。你应该只使用connectionId。根据您的需要,您可以使用您提供的链接中描述的另一种方法。

例如,将每个连接加入userId命名的组:

Groups.Add(Context.ConnectionId, userId);

然后你可以发送消息给指定的用户:

Clients.Group(userId).sendMessage("asa");

另一个用例可能包括在OnConnected方法中确定userId,然后通过其connectionId将用户添加到所需组:

var groupName = GetGroupNameByUserId(userId);
Groups.Add(Context.ConnectionId, groupName);
...
Clients.Group(groupName).sendMessage("asa");