我想了解UserIdentifier、ConnectionId和ASP.NET Core SignalR中的团队背后的哲学?同一个UserIdentifer (表示为用户)可以具有多个signalR连接ID,这不是真的吗?如果是这样的话,为什么要用团体来联系呢?为什么不在一个UserIdentifier下建立俱乐部联系呢?
发布于 2020-09-24 18:37:52
同一个UserIdentifer (表示为用户)可以具有多个signalR连接ID,这不是真的吗?
是的,SignalR
中的单个用户可以有多个连接到一个应用程序。例如,用户可以在他们的桌面和手机上连接。每个设备都有一个单独的SignalR
连接,但它们都与同一个用户相关联。
如果是这样的话,为什么要用团体来联系呢?
组是与名称关联的连接的集合。消息可以发送到组中的所有连接,而每个连接可以与不同的用户相关联。组是发送到连接或多个连接的推荐方法,因为组是由应用程序管理的。连接可以是多个组的成员。
为什么不在一个UserIdentifier下建立俱乐部联系呢?
通过将用户标识符传递给hub方法中的用户函数,可以向特定用户发送消息,如下面的示例所示:
public Task SendPrivateMessage(string user, string message)
{
return Clients.User(user).SendAsync("ReceiveMessage", message);
}
如果将消息发送给用户,则与该用户关联的所有连接都将接收消息。连接的用户标识符可以由集线器中的Context.UserIdentifier
属性访问。
在Hub.Clients中还有更多的方法。
SignalR非常灵活,允许基于需要的许多选项。您可以在这里找到关于SignalR中的用户和组的更多细节。
https://stackoverflow.com/questions/64045420
复制相似问题