public void BkkServiceUnitTest_TestMethod2() { var wssv = new BkkWebSocketServer(/*dataService, */ "127.0.0.1", 44444); wssv.Start(); for (int i = 0; i < 10; i++) { System.Threading.Tasks.Task.Delay(2000).Wait(); wssv.UpdateUser("User-001", true, true); } Console.ReadKey(true); wssv.Stop(); }
/// <summary> /// Initializes a new instance of the MainViewModel class. /// </summary> public MainViewModel(IDataService dataService, IDlgService dlgService) { _dataService = dataService; _dlgService = dlgService; /** */ _dataService.GetAppConfig((cfg, x) => { Title = $"Simulador WS Brekeke. Nucleo 2018. Listening at {cfg.Ip}:{cfg.Port}..."; _wss = new BkkWebSocketServer(cfg.Ip, cfg.Port); _wss.Start(); _wss.Activate(_dataService); }); IsStarted = true; NewUserName = ""; OpenSessions = 0; /** Programacion de los comandos UI */ AppExit = new RelayCommand(() => { _dlgService.Confirm("¿Desea Salir de la Aplicacion?", (res) => { if (res) { if (IsStarted) { _wss.Deactivate(); _wss.Stop(); } _dataService.SaveWorkingUsers(null); System.Windows.Application.Current.Shutdown(); } }, Title); }); AppStartStop = new RelayCommand(() => { }); AppAddUser = new RelayCommand(() => { if (NewUserName == string.Empty) { Messenger.Default.Send<BkkSimEvent>(new BkkSimEvent(ModelEvents.Message) { Data = "El Nombre de Usuario no puede estar vacio"}); } else if (_dataService.WorkingUserExist(NewUserName) == true) { Messenger.Default.Send<BkkSimEvent>(new BkkSimEvent(ModelEvents.Message) { Data = $"Nombre de Usuario <{NewUserName}> repetido..."}); } else { _dlgService.Confirm($"¿Desea añadir el usuario {NewUserName}?", (res) => { if (res) { WorkingUser newuser = new WorkingUser() { Name = NewUserName, /*Registered = true, */Status = UserStatus.Disconnect }; Messenger.Default.Send<BkkSimEvent>(new BkkSimEvent(ModelEvents.Register) { Data = newuser }); } }, Title); } }); /** Gestor de Mensajes... */ Messenger.Default.Register<BkkSimEvent>(this, (ev) => { switch (ev.Event) { case ModelEvents.Message: Task.Factory.StartNew(() => { var msg = ev.Data as string; System.Windows.Threading.Dispatcher.CurrentDispatcher.Invoke(() => { SystemMessage = msg; Task.Delay(5000).Wait(); SystemMessage = ""; }); }); break; case ModelEvents.Register: _dataService.AddWorkingUser((ev.Data as WorkingUser).Name, null); _wss.UpdateUser((ev.Data as WorkingUser).Name, true, false); RaisePropertyChanged("UIUsers"); break; case ModelEvents.Unregister: _dlgService.Confirm($"¿Desea eliminar el usuario {(ev.Data as WorkingUser).Name}?", (res) => { if (res) { _wss.InformUserUnregistered((ev.Data as WorkingUser).Name); _dataService.DelWorkingUser((ev.Data as WorkingUser).Name, null); RaisePropertyChanged("UIUsers"); } }, Title); break; case ModelEvents.StatusChange: _wss.UpdateUser((ev.Data as WorkingUser).Name, false, true); break; case ModelEvents.SessionOpen: OpenSessions = OpenSessions + 1; break; case ModelEvents.SessionClose: OpenSessions = OpenSessions - 1; break; } }); }