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(); } }); }
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)); } }