static async Task Main(string[] args) { var channel = GrpcChannel.ForAddress("https://localhost:5001"); var client = new Aggregator.AggregatorClient(channel); await ServerStreamingCallExample(client); await ClientStreamingCallExample(client); Console.WriteLine("Press any key to exit..."); Console.ReadKey(); }
private static async Task ClientStreamingCallExample(Aggregator.AggregatorClient client) { using var call = client.AccumulateCount(); for (var i = 0; i < 3; i++) { var count = Random.Next(5); Console.WriteLine($"Accumulating with {count}"); await call.RequestStream.WriteAsync(new CounterRequest { Count = count }); await Task.Delay(2000); } await call.RequestStream.CompleteAsync(); var response = await call; Console.WriteLine($"Count: {response.Count}"); }
private static async Task ServerStreamingCallExample(Aggregator.AggregatorClient client) { var cts = new CancellationTokenSource(); cts.CancelAfter(TimeSpan.FromSeconds(3.5)); using var call = client.SayHellos(new HelloRequest { Name = "AggregatorClient" }, cancellationToken: cts.Token); try { await foreach (var message in call.ResponseStream.ReadAllAsync()) { Console.WriteLine("Greeting: " + message.Message); } } catch (RpcException ex) when(ex.StatusCode == StatusCode.Cancelled) { Console.WriteLine("Stream cancelled."); } }
private static async Task ServerStreamingCallExample(Aggregator.AggregatorClient client) { var cts = new CancellationTokenSource(); cts.CancelAfter(TimeSpan.FromSeconds(3.5)); using (var replies = client.SayHellos(new HelloRequest { Name = "AggregatorClient" }, cancellationToken: cts.Token)) { try { while (await replies.ResponseStream.MoveNext(cts.Token)) { Console.WriteLine("Greeting: " + replies.ResponseStream.Current.Message); } } catch (RpcException ex) when(ex.StatusCode == StatusCode.Cancelled) { Console.WriteLine("Stream cancelled."); } } }
public static async Task AggregatorServerStreamingCallExample(Aggregator.AggregatorClient client) { var cts = new CancellationTokenSource(); cts.CancelAfter(TimeSpan.FromSeconds(3.0)); using (var replies = client.SayHellos(new HelloRequest { Name = "张三" }, cancellationToken: cts.Token)) { try { await foreach (var reply in replies.ResponseStream.ReadAllAsync()) { Console.WriteLine($"Greeting:{reply.Message}"); } } catch (RpcException ex) when(ex.StatusCode == StatusCode.Cancelled) { Console.WriteLine("Stream cancelled."); } } }
static async Task Main(string[] args) { // 为客户端配置选项 // 更多配置见:https://docs.microsoft.com/zh-cn/aspnet/core/grpc/configuration?view=aspnetcore-3.0#configure-client-options var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions { MaxReceiveMessageSize = 5 * 1024 * 1024, // 5MB MaxSendMessageSize = 2 * 1024 * 1024 // 2MB }); var clientGreeter = new Greeter.GreeterClient(channel); var clientCounter = new Counter.CounterClient(channel); //var clientRacer = new Racer.RacerClient(channel); var clientAggregator = new Aggregator.AggregatorClient(channel); //await UnaryStreamCallExample(clientGreeter); //await ServerStreamingCallExample(clientGreeter); //await ClientStreamingCallExample(clientCounter); //await BidirectionalStreamingExample(clientRacer); await AggregatorServerStreamingCallExample(clientAggregator); Console.ReadLine(); }