コード例 #1
0
        private void SetupScreen()
        {
            var chatMenu = new ChatMenuScreen(_chatUi);
            var mainMenu = new MainMenuScreen(_chatUi);

            mainMenu.MenuItems = new List <MenuItem>
            {
                new MenuItem("0", "Connect", (_) => { _chatClient.Connect(_configuration); }, null),
                new MenuItem("1", "List chat rooms", (_) => { _chatUi.PrintAvailableRooms(_chatClient.GetChatRooms()); }, null),
                new MenuItem("2", "Subscribe chat room", (room) => _chatClient.SubscribeChatRoom(room).Wait(), null),
                new MenuItem("3", "Unsubscribe chat room", (room) => _chatClient.UnsubscribeChatRoom(room).Wait(), null),
                new MenuItem("4", "Enter chat room", (room) => _chatClient.EnterChatRoom(room, _chatUi.PrintMessage).Wait(), chatMenu),
                new MenuItem("5", "Leave chat room", (_) => _chatClient.LeaveChatRoom().Wait(), null),
                new MenuItem("6", "Disconnect", (_) => _chatClient.Disconnect().Wait(), null),
            };

            chatMenu.MenuItems = new List <MenuItem>
            {
                new MenuItem("10", "Connect", (_) => _chatClient.Connect(_configuration), null),
                new MenuItem("11", "List signed users", (_) => { _chatUi.PrintSignedUsers(_chatClient.GetRegisteredUsers()); }, null),
                new MenuItem("12", "List online users", (_) => { _chatUi.PrintOnlineUsers(_chatClient.GetOnlineUsers()); }, null),
                new MenuItem("13", "Publish message", (msg) => _chatClient.PublishMessage(msg), null),
                new MenuItem("14", "Leave room", (_) => _chatClient.LeaveChatRoom(), mainMenu),
                new MenuItem("15", "Disconnect", (_) => _chatClient.Disconnect(), null),
            };

            _currentScreen = mainMenu;
        }
コード例 #2
0
        public async Task SendMessageAsync_ShouldBeTrue_IfLoggedAndConnected()
        {
            //Arrange
            var message = "Message1";
            await _chatClient.LoginAsync("Usuario1", "P2ssw0rd!");

            _chatClient.Connect();

            //Act
            var result = await _chatClient.SendMessageAsync(message);

            //Assert
            result.Should().BeTrue();
        }
コード例 #3
0
ファイル: ChatUseCase.cs プロジェクト: nenoNaninu/RxWebSocket
        public ChatUseCase(IChatPresenter presenter, IChatClient chatClient)
        {
            _presenter  = presenter;
            _chatClient = chatClient;


            _presenter.OnConnectButtonClick
            .Where(x => !string.IsNullOrEmpty(x.Name) && !string.IsNullOrEmpty(x.Uri))
            .Subscribe(async x =>
            {
                await chatClient.Connect(x.Name, x.Uri);
                _presenter.OnConnectSuccess();
            });

            _presenter.OnCloseButtonClick
            .Subscribe(async _ =>
            {
                await _chatClient.Close();
                presenter.OnDisconnect();
            });

            _presenter.OnMessageSendRequest
            .Subscribe(x => chatClient.Send(x));

            _chatClient.OnReceived
            .ObserveOnMainThread()
            .Subscribe(x => presenter.OnMessageReceived(x.Name, x.Message));

            _presenter.OnDestroy
            .Subscribe(_ =>
            {
                _chatClient.Dispose();
            });
        }
コード例 #4
0
        public async Task Connect()
        {
            await _chatClient.Connect();

            _chatClient.SendMessage("Hello World! The bot has arrived!");
            _followerService.OnNewFollower     += FollowerServiceOnOnNewFollower;
            _subscriberHandler.OnNewSubscriber += SubscriberHandlerOnOnNewSubscriber;
        }
コード例 #5
0
        public void Start()
        {
            if (!_client.Connected)
            {
                _client.Connect();
            }
            _routineTimer.Start();
            RefreshRoutineInternal(this, null);
            _client.NewChatMessage    += ClientOnNewChatMessage;
            _repository.SaveCompleted += async(sender, time) => await Task.Run(() =>
            {
                LastSaveTime = time;
                OnPropertyChanged(nameof(LastSaveTime));
            });

            Active = true;
        }
コード例 #6
0
        public async Task <bool> CheckConnectionAndRestartIfNeeded()
        {
            if (!hasBootedUp)
            {
                return(false);
            }

            var timeOfLatestMessage = await chatRepository.GetTimeStampForLatestMessage().ConfigureAwait(false);

            var timeOfCheck = datetimeProvider.UtcNow;

            logger.LogInformation("time of latest message: {arg}, time of check: {argTwo}", timeOfLatestMessage, timeOfCheck);
            if (timeOfLatestMessage < timeOfCheck.AddMinutes(-30))
            {
                await client.Disconnect().ConfigureAwait(false);

                logger.LogInformation("Client Disconnected");

                await Task.Delay(TimeSpan.FromMinutes(1)).ConfigureAwait(false);

                await client.Connect().ConfigureAwait(false);

                var channels = await channelRepository.GetChannels().ConfigureAwait(false);

                foreach (var channel in channels.Where(x => x.ShouldListen))
                {
                    await client.JoinChannel(channel.ChannelName).ConfigureAwait(false);
                }

                logger.LogInformation("Client Reconnected and Joined");

                return(true);
            }

            return(false);
        }
コード例 #7
0
        public void Job()
        {
            LoggerHandler.Init(new[] { (Action <string>)Console.WriteLine }, "" /*GetAvailableLogFilename(logFilePath)*/,
                               minLogLevel: LogLevel.Warn);
            _chat = new ChatClient(settings.TcpServerIp, 10240, "raspberry", "parola01");
            _piHW = new RaspberryHardware(settings.PwmPeriod, settings.PwmHighDuration, settings.LinesToSkip);

            BindEvents();

            _chat.Connect();
            _piHW.Start();

            _working = true;
            while (_working)
            {
                Console.Write("&:");
                var line = Console.ReadLine();
                ProcessCommand(line);
            }
        }
コード例 #8
0
ファイル: Program.cs プロジェクト: ironda/integracion
        private static async Task Main(string[] args)
        {
            var httpClient = new HttpClient();

            httpClient.BaseAddress = new Uri("http://localhost:5000/api/");
            _chatClient            = new ChatClient(new ChatApiClient(httpClient), new UserApiClient(httpClient));

            WelcomeMessage();

            var key = Console.ReadKey();

            CheckLoginSelection(key);

            IntroduceLoginData();

            await LoginOrCreateUserAsync(key);


            _chatClient.OverwriteLastLine += (sender, _) => { Console.SetCursorPosition(Console.CursorLeft, Console.CursorTop - 1); };
            _chatClient.NewMessageRecived += (sender, s) => { Console.WriteLine(s); };
            _chatClient.Connect();

            var message = "";

            Console.Clear();
            while (true)
            {
                message = Console.ReadLine();
                if (message == "exit")
                {
                    break;
                }

                await _chatClient.SendMessageAsync(message);
            }

            _chatClient.Dispose();
        }