SignalR 的协商调用返回一个连接 ID。调用协商请求时,有没有办法在服务器端获取连接 ID?
生成连接 ID 后,是否有可以订阅的服务器端事件?
如果您使用的是 SignalR Hub,则可以侦听连接事件,然后获取Context.ConnectionId。例如
public override Task OnConnected()
{
return Clients.All.joined(Context.ConnectionId, DateTime.Now.ToString());
}
有关更多信息,请参阅https://github.com/SignalR/SignalR/wiki/Hubs。
字符串 connectionID = Context.ConnectionId;
如果您使用的是 PersistentConnection ,则可以覆盖
ProcessRequestAsync(HostContext context)
方法并从 HostContext 的 IResponse 属性中获取 connectionId 值。
另一种方法是使用 DependecyResolver 提供您自己的 IConnectionIdFactory 实现,该实现在返回 connectionId 字符串之前引发事件。