我在玩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/