public async Task CheckServiceHealthTest() { var builder = new ServiceManagerBuilder(); var serviceManager = builder .WithOptions(o => { o.ConnectionString = TestConfiguration.Instance.ConnectionString; }) .Build(); var isHealthy = await serviceManager.IsServiceHealthy(default);
public static async Task <IActionResult> SubscribeForSessionUpdatesOnSignalR( [HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "sessions/{sessionId}/signalr/{userId}/subscribe")] HttpRequestMessage reqMsg, string sessionId, string userId, [SignalR(HubName = "%Region%")] IAsyncCollector <SignalRGroupAction> signalRGroupActions, ILogger log) { log.LogInformation("SubscribeForSessionUpdatesOnSignalR was called."); // TODO: check if session with given id exists or not // determine browser session id from cookie: // TODO: this fails, probably because of cross domain restrictions on cookies: var browserSessionIdCookie = reqMsg.Headers.GetCookies(SessionToken).FirstOrDefault(); var browserSessionId = System.Guid.NewGuid().ToString(); if (browserSessionIdCookie != null && browserSessionIdCookie.Cookies[0] != null) { browserSessionId = browserSessionIdCookie.Cookies[0].Value; log.LogInformation($"got cookie with session id: {browserSessionId}"); } // remove users from all signalr groups: try{ log.LogInformation($"About to remove user with browser session {browserSessionId} from all SignalR groups."); var signalRMgmtBuilder = new ServiceManagerBuilder(); var signalRService = signalRMgmtBuilder.WithOptions(config => { config.ConnectionString = System.Environment.GetEnvironmentVariable("AzureSignalRConnectionString", EnvironmentVariableTarget.Process); }).Build(); var region = System.Environment.GetEnvironmentVariable("Region", EnvironmentVariableTarget.Process); var signalRHub = await signalRService.CreateHubContextAsync(region); await signalRHub.UserGroups.RemoveFromAllGroupsAsync(browserSessionId); log.LogInformation($"Removed user with browser session {browserSessionId} from all SignalR groups."); } catch (Exception e) { log.LogError($"Failed to remove user/browsersession ({browserSessionId}) from all signalr groups: {e.Message}"); } // add user to group for specified session: var groupname = $"listeners-for-session-{sessionId}"; log.LogInformation($"About to add user to group {groupname} for session {sessionId}."); await signalRGroupActions.AddAsync(new SignalRGroupAction { UserId = userId, GroupName = groupname, Action = GroupAction.Add }); log.LogInformation($"Added user with id {userId} and browser session {browserSessionId} to SignalR group for qna session {sessionId} with group name: {groupname}"); var signalRNegotiateBaseUrl = System.Environment.GetEnvironmentVariable("SignalRNegotiateBaseUrl", EnvironmentVariableTarget.Process).Replace("{sessionId}", sessionId); return(new OkWithSessionCookieObjectResult(new { SignalRNegotiateBaseUrl = signalRNegotiateBaseUrl }, browserSessionId)); }