我正在玩SignalR并且正在徘徊SignalR如何根据我的IP地址,我连接的设备或其他内容创建一个connectionID?而且可以手动设置此ID。假设我有一个用户数据库,我给出了一个唯一的号码,我可以用这个号码作为connectionID吗?
亲切的问候
答案 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();
}