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()); }