public async Task <SignalRConnectionInfo> GetClientConnectionInfoAsync(string userId, IList <Claim> claims, HttpContext httpContext) { var negotiateResponse = await _serviceHubContext.NegotiateAsync(new NegotiationOptions() { UserId = userId, Claims = BuildJwtClaims(claims, AzureSignalRUserPrefix).ToList(), HttpContext = httpContext }); return(new SignalRConnectionInfo { Url = negotiateResponse.Url, AccessToken = negotiateResponse.AccessToken }); }
/// <summary> /// Gets client endpoint access information object for SignalR hub connections to connect to Azure SignalR Service /// </summary> protected async Task <SignalRConnectionInfo> NegotiateAsync(NegotiationOptions options) { if (_hubContext != null) { var negotiateResponse = await _hubContext.NegotiateAsync(options); return(new SignalRConnectionInfo { Url = negotiateResponse.Url, AccessToken = negotiateResponse.AccessToken }); } else { //fall back to single endpoint negotiation return(new SignalRConnectionInfo { Url = _serviceManager.GetClientEndpoint(HubName), AccessToken = _serviceManager.GenerateClientAccessToken(HubName, options.UserId, options.Claims, options.TokenLifetime) }); } }