javascript - 信号器框架何时调用 Signalr IUserIdProvider 的方法 GetUserId

标签 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);

用户是否必须经过身份验证才能正常工作?

最佳答案

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

但是,如果用户已通过身份验证,并且您没有在 SignalR 的 DependencyResolver 中将默认的 IUserIdProvider 替换为您自己的 IUserIdProvider,则客户端的用户 ID 将等于其 IPrincipal.Identity.Name

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

关于javascript - 信号器框架何时调用 Signalr IUserIdProvider 的方法 GetUserId,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26072998/

相关文章:

javascript - 如何对 URL 进行 JSON 调用?

javascript - Grails jQuery 插件和 JS 脚本之间的冲突

asp.net - 为此我需要什么类型的 Facebook 身份验证/ token ?

asp.net - ASP.NET 中的会计样式字符串格式

java - Signal R native Android 应用程序协商失败

asp.net-mvc - 从 Controller 的操作调用集线器方法

javascript - 将值从 js 发布到 php

javascript - fs.readFileSync 有时仅在特定情况下返回有效字符串

asp.net - Azure Redis 缓存的 session 状态不适用于多个实例

javascript - 使用 SignalR 连接 Knockout(对象不支持属性或方法)