Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        /// <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;
                }
            });

        }