Пример #1
0
        public void TestAddingAndRemovingUser()
        {
            var hubUser = new FakeHubUser("1", "123", "12").Build();

            _manageHubUser.AddUser(hubUser);
            var userToRemove = _manageHubUser.GetUserByConnectionId(hubUser.ConnectionId);

            _manageHubUser.RemoveUser(userToRemove);

            var  userInDb  = _hubUserContext.ConnectedUsers.Where(u => u.ConnectionId == userToRemove.ConnectionId).SingleOrDefault();
            var  userCount = _hubUserContext.ConnectedUsers.ToList().Count;
            bool result    = false;

            if (userInDb == null)
            {
                result = true;
            }

            Assert.True(result);
            Assert.Equal(0, userCount);
        }
Пример #2
0
        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);
        }