private static async Task HandleClientServerStreamingCall(TestService.TestServiceClient client) { var tokenSource = new CancellationTokenSource(); var call = client.GetInputStreamAsServerStream(cancellationToken: tokenSource.Token, deadline: DateTime.UtcNow.AddSeconds(10)); for (int i = 0; i < 3; i++) { var inputLine = Console.ReadLine(); if (inputLine == "Q") { tokenSource.Cancel(); break; } await call.RequestStream.WriteAsync(new EchoInput() { Input = inputLine }); } await call.RequestStream.CompleteAsync(); var responses = call.ResponseStream.ReadAllAsync(); await foreach (var res in responses) { Console.WriteLine("Get echo from stream: " + res.Output.Trim()); Console.WriteLine("Get echo time: " + res.TimeStamp.ToDateTime().ToLocalTime()); } }