是什么决定了SignalR connectionID以及如何手动设置它

本文关键字:何手动 设置 决定了 SignalR connectionID 是什么 | 更新日期: 2023-09-27 17:49:30

我正在玩SignalR,并徘徊SignalR如何创建一个connectionID这是基于我的IP地址,我连接的设备或其他东西?是否可以手动设置这个ID。假设我有一个用户数据库我给了一个唯一的号码,我能把这个号码作为connectionID吗?

亲切的问候

是什么决定了SignalR connectionID以及如何手动设置它

SignalR连接Id是生成的guid。如果您希望以更有意义的方式使用您的数据来定位用户,我发现将与您的客户机连接一起传递一些内容(例如用户Id和数据库中的一些其他数据)到信号集线器并根据您提供的内容创建一个组是很有用的。如果你试图用你自己的标识符隔离用户,它应该是1:1的映射。

您可以通过在您的集线器中重写OnConnected()来实现这一点,并实现类似这样的东西,它将生成的Id映射到您自己的Id。然后,您可以根据自己的喜好定位这些组(记住,1:1,模拟Id选择器)。


public override Task OnConnected()
{
    var user = new User()
    {
        Id = Context.QueryString["Id"]
        Name = Context.QueryString["Name"]
    }
    Groups.Add(Context.ConnectionId, user.Id);
    return base.OnConnected();
}

将SignalR用户映射到连接也将进行更详细的介绍。