Beispiel #1
0
        private static async Task RunClientStreamingRpc(FooService.FooServiceClient client)
        {
            WriteLine("Starting client streaming RPC example...\n", ConsoleColor.Blue);

            Console.WriteLine("You will be requested for messages that should be streamed to server.");
            Console.WriteLine("Each message will be streamed to server until request client requests finishes.");
            Console.WriteLine("To finish the request just leave the message empty.");

            var clientStreamingCall = client.SendFoos(new CallOptions());

            while (true)
            {
                WriteRequestInput("Enter a message that should be streamed to gRPC server:");
                var result = Console.ReadLine();

                if (string.IsNullOrEmpty(result))
                {
                    await clientStreamingCall.RequestStream.CompleteAsync().ConfigureAwait(false);

                    break;
                }

                var fooRequest = new FooRequest {
                    Message = result
                };
                await clientStreamingCall.RequestStream.WriteAsync(fooRequest).ConfigureAwait(false);
            }

            var response = await clientStreamingCall.ResponseAsync.ConfigureAwait(false);

            Console.WriteLine($"\n\tgRPC Server response:\n\t> {response.Message}\n");

            WriteLine("Finished client streaming RPC example...", ConsoleColor.Blue);
            WriteSeparator();
        }