当信号器框架调用Signalr IUserIdProvider的方法GetUserId时

时间:2014-09-27 08:53:29

标签: javascript asp.net signalr signalr-hub

当我们有一个自定义IUserIdProvider时,SignalR框架何时调用GetUserId方法,如下所示:

public class RealTimeNotificationsUserIdProvider : IUserIdProvider
{
    public string GetUserId(IRequest request)
    {
        return  request.QueryString["userId"];
    }
}

ConnectionId到UserId映射的方式和时间以及以下方法如何工作:

 Clients.User("1").notify(notificationsJson);

是否必须对用户进行身份验证才能使其正常工作?

1 个答案:

答案 0 :(得分:1)

无需对用户进行身份验证即可使自定义IUserIdProvider正常工作。

但是,如果用户已通过身份验证,并且您未在SignalR的DependencyResolver中替换默认的IUserIdProvider,则客户端的用户ID将等于其{{1} }。

客户端的连接ID和用户ID之间没有完全映射,但是当客户端使用SignalR连接时,它将在内部建立订阅以接收发送到其连接ID和用户ID的消息。建立每个SignalR连接时调用IUserIdProvider.GetUserId,因此SignalR可以设置订阅。