protected override Task OnClose(CloseEventArgs e)
 {
     lock (locker)
     {
         SessionRegister?.Invoke(this, false);
         IsStarted = false;
         BkkMessaging.Send(ModelEvents.SessionClose, null);
     }
     return(base.OnClose(e));
 }
        /// <summary>
        /// Se ha conectado un cliente...
        /// </summary>
        /// <returns></returns>
        protected override Task OnOpen()
        {
            lock (locker)
            {
                SessionRegister?.Invoke(this, true);
                IsStarted = true;
                Task.Factory.StartNew(() =>
                {
                    /** */
                    Send(MessageService.ServerStatusActive);

                    DateTime lastRefresh = DateTime.MinValue;
                    while (IsStarted)
                    {
                        Task.Delay(TimeSpan.FromSeconds(1)).Wait();
                        if ((DateTime.Now - lastRefresh) >= TimeSpan.FromSeconds(RefreshPeriod))
                        {
                            lastRefresh = DateTime.Now;
                            lock (locker)
                            {
                                DataService?.GetWorkingUsers((data, ex) =>
                                {
                                    if (ex == null)
                                    {
                                        /** Envio lo registrados */
                                        Send(MessageService.RegisteredMsg(data.Users));
                                        /** Envio los estados */
                                        Send(MessageService.StatusMsg(data.Users));
                                    }
                                });
                            }
                        }
                    }
                    Send(MessageService.ServerStatusClose);
                });
                BkkMessaging.Send(ModelEvents.SessionOpen, null);
            }
            return(base.OnOpen());
        }