public async override Task OnDisconnectedAsync(Exception exception) { string connectionId = Context.ConnectionId; var groupMember = _hubUser.GetUserByConnectionId(connectionId); if (exception != null) { Log.Warning(String.Concat(logPrefix, "Disconnecting user: [ ", connectionId, " ] for room: [ ", groupMember.GroupName, " ]: \n", exception.Message)); } else { Log.Information(String.Concat(logPrefix, "Disconnecting user: [ ", connectionId, " ] from room: [ ", groupMember.GroupName, " ]")); } await _hubUser.RemoveUserAsync(groupMember); await Groups.RemoveFromGroupAsync(connectionId, groupMember.GroupName); //if group member changed roomNo exit patient view if (groupMember.UserId != null && !_queueService.CheckRoomSubordination(groupMember.UserId, groupMember.GroupName)) { _queueService.SetQueueInactive(groupMember.UserId); InitGroupScreen(groupMember); } else if (groupMember.UserId != null) { await Task.Delay(TimeSpan.FromMinutes(SettingsHandler.ApplicationSettings.PatientViewNotificationAfterDoctorDisconnectedDelay)); if (_hubUser.GetConnectedUserById(groupMember.UserId) == null) { _queueService.SetQueueInactive(groupMember.UserId); Log.Information(String.Concat(logPrefix, "Room: [ ", groupMember.GroupName, " ] master disconnected, connectionId: [ ", groupMember.ConnectionId, " ] userId: [ ", groupMember.UserId, " ]")); InitGroupScreen(groupMember); } } await base.OnDisconnectedAsync(exception); }
public async void TestRemovingSingleConnectedUserAsync() { var hubUser = new FakeHubUser("1", "123", "12").Build(); _hubUserContext.ConnectedUsers.Add(_mapper.Map <ConnectedHubUser>(hubUser)); _hubUserContext.SaveChanges(); var userFromDb = _hubUserContext.ConnectedUsers.Where(u => u.ConnectionId == u.ConnectionId).SingleOrDefault(); await _manageHubUser.RemoveUserAsync(_mapper.Map <HubUser>(userFromDb)); var userInDb = _hubUserContext.ConnectedUsers.Where(u => u.ConnectionId == userFromDb.ConnectionId).SingleOrDefault(); var userCount = _hubUserContext.ConnectedUsers.ToList().Count; bool result = false; if (userInDb == null) { result = true; } Assert.True(result); Assert.Equal(0, userCount); }