SignalR - 使用 UserID Provider 向用户发送消息

hat*_*cyl 5 javascript c# asp.net asp.net-mvc signalr

使用 SignalR,我相信我应该能够使用UserID Provider向特定连接的用户发送消息

有没有人有一个如何实施的例子?我搜索和搜索,找不到任何例子。我需要定位一个 javascript 客户端。

用例是,我网站的用户将拥有一个帐户。他们可能从多个设备/浏览器登录。当某些事件发生时,我想向他们发送消息。

小智 2

我还没有研究过 SignalR 2.0,但我认为这是 SignalR 以前版本的扩展。当您连接到集线器时,您可以使用授权属性来装饰它

[HubName("myhub")]
[Authorize]
public class MyHub1 : Hub
{
    public override System.Threading.Tasks.Task OnConnected()
    {
        var identity = Thread.CurrentPrincipal.Identity;
        var request = Context.Request;
        Clients.Client(Context.ConnectionId).sayhello("Hello " + identity.Name);
        return base.OnConnected();
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,您可以访问访问集线器的用户的身份。我相信新功能只不过是此功能的延伸。由于客户端和集线器之间的连接始终保持活动状态,因此您将始终拥有主体身份,该身份将为您提供 UserId。