我在玩SignalR,在徘徊SignalR如何创建connectionID,这是基于我的IP地址,所连接的设备还是其他?而且,可以手动设置此ID。假设我有一个数据库,该数据库的用户提供一个唯一的号码,我可以使用该号码作为connectionID吗?

亲切的问候

最佳答案

SignalR连接ID是生成的GUID。如果您想以更有意义的方式使用数据来定位用户,我发现将客户端连接中的某些内容(例如用户ID和数据库中的其他数据)传递到Signalr集线器并进行精心设计非常有用根据您提供的内容分组。如果您尝试使用自己的标识符隔离用户,则应为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();
}




Mapping SignalR Users to Connections 也有更详细的说明。

关于c# - 什么决定了SignalR connectionID以及如何手动设置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22303354/

10-14 11:49
查看更多