예제 #1
0
        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();
            });
        }
예제 #2
0
        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();
        }
예제 #3
0
 public void Dispose()
 {
     _chatClient?.Dispose();
 }
예제 #4
0
 public void Dispose()
 {
     Stop();
     _client.Dispose();
 }
 public void Dispose()
 {
     client.Dispose();
     pubSubClient.Dispose();
 }