Пример #1
0
        public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled)
        {
            var openDialogs = service.GetOpenDialogConnectionIds(Context.ConnectionId);

            foreach (var conn in openDialogs)
            {
                Clients.Client(conn.ConnectionId).userDisconnected(conn.Id);
            }

            if (!service.HasOtherClients(Context.ConnectionId))
            {
                foreach (var userGroup in service.GetClientUserGroupIds(Context.ConnectionId))
                {
                    Clients.OthersInGroup(userGroup.GroupId + UserListGroupPrefix).userDisconnected(userGroup.UserId);
                }
            }

            var groupUser = service.CloseConnection(Context.ConnectionId);

            if (groupUser != null)
            {
                if (!service.IsUserInGroup(groupUser.UserId, groupUser.GroupId))
                {
                    Clients.OthersInGroup(groupUser.GroupId + UserListGroupPrefix).removeUser(groupUser.UserId);
                }
            }

            return(base.OnDisconnected(stopCalled));
        }
Пример #2
0
 public void CloseConnection()
 {
     _service.CloseConnection();
     _logger.Log(Constants.LogLevel.Debug, "Connection on " + _view.port + " closed");
     _view.DisableMessaging();
 }