Javascript 信号器IUserIdProvider';由signalr框架调用的方法GetUserId
当我们有一个自定义IUserIdProvider时,SignalR框架何时调用GetUserId方法,如下所示:Javascript 信号器IUserIdProvider';由signalr框架调用的方法GetUserId,javascript,asp.net,signalr,signalr-hub,Javascript,Asp.net,Signalr,Signalr Hub,当我们有一个自定义IUserIdProvider时,SignalR框架何时调用GetUserId方法,如下所示: public class RealTimeNotificationsUserIdProvider : IUserIdProvider { public string GetUserId(IRequest request) { return request.QueryString["userId"]; } } ConnectionId到Use
public class RealTimeNotificationsUserIdProvider : IUserIdProvider
{
public string GetUserId(IRequest request)
{
return request.QueryString["userId"];
}
}
ConnectionId到UserId的映射是如何以及何时发生的,以下方法是如何工作的:
Clients.User("1").notify(notificationsJson);
用户是否必须通过身份验证才能使用此功能?用户无需通过身份验证即可使用自定义IUserIdProvider 但是,如果用户已通过身份验证,并且您没有在Signal的DependencyResolver中将默认的IUserIdProvider替换为您自己的,则客户端的用户id将等于其
IPrincipal.Identity.Name
客户端的连接id和用户id之间没有精确的映射,但当客户端使用SignalR连接时,它将在内部建立订阅,以接收发送到其连接id和用户id的消息。在建立每个SignalR连接时,将调用IUserIdProvider.GetUserId,所以信号员可以设置订阅