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

时间:2014-03-10 14:44:56

标签: c# connection signalr

我正在玩SignalR并且正在徘徊SignalR如何根据我的IP地址,我连接的设备或其他内容创建一个connectionID?而且可以手动设置此ID。假设我有一个用户数据库,我给出了一个唯一的号码,我可以用这个号码作为connectionID吗?

亲切的问候

1 个答案:

答案 0 :(得分:0)

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();
}

Mapping SignalR Users to Connections 也会详细介绍。