Beispiel #1
0
        private void ProcessClientConnect(TcpClient clientConnect)
        {
            Task.Run(async() =>
            {
                try
                {
                    var messageStream = clientConnect.GetStream();
                    while (true)
                    {
                        if (!clientConnect.Connected)
                        {
                            break;
                        }
                        var request = await _streamOperator.ReadAsync(messageStream);

                        var response = await _chatBot.HandleRequest(request, clientConnect);
                        if (string.IsNullOrEmpty(response))
                        {
                            continue;
                        }
                        await _streamOperator.WriteAsync(messageStream, response);

                        if (response.Contains("Chat closed"))
                        {
                            break;
                        }
                    }
                }
                finally
                {
                    clientConnect.Dispose();
                }
            });
        }
Beispiel #2
0
        public async Task <SendMessageResult> SendMessage(string message)
        {
            try
            {
                if (_needToConnect)
                {
                    client.Connect(_settings.ServerAddress, _settings.Port);
                    stream         = client.GetStream();
                    _needToConnect = false;
                }

                await _streamOperator.WriteAsync(stream, message);

                var responseText = await _streamOperator.ReadAsync(stream);

                return(_answerFactory.CreateSandMessageResult(responseText));
            }
            catch (Exception e)
            {
                return(_answerFactory.CreateSandMessageResult(e));
            }
        }