static async Task CallServerStreamService() { using (var channel = GrpcChannel.ForAddress(_url)) { var client = new ServerStream.ServerStreamClient(channel); var request = new ServerStremRequest(); request.NumberList.Add( new Numbers() { Number1 = 12, Number2 = 6 } ); request.NumberList.Add(new Numbers() { Number1 = 43, Number2 = 23 } ); request.NumberList.Add(new Numbers() { Number1 = 22, Number2 = 45 } ); request.NumberList.Add(new Numbers() { Number1 = 54, Number2 = 33 } ); request.NumberList.Add(new Numbers() { Number1 = 11, Number2 = 1 } ); var addReply = client.Add(request); await Task.Run(async() => { while (await addReply.ResponseStream.MoveNext(new System.Threading.CancellationToken())) { Console.WriteLine($"Add result : {addReply.ResponseStream.Current.Result}"); } }); var subReply = client.Sub(request); await Task.Run(async() => { while (await subReply.ResponseStream.MoveNext(new System.Threading.CancellationToken())) { Console.WriteLine($"Sub result : {subReply.ResponseStream.Current.Result}"); } }); } }
public override async Task Sub(ServerStremRequest request, IServerStreamWriter <ServerStremReply> replyStream, ServerCallContext context) { await Task.Run(async() => { foreach (var req in request.NumberList) { await replyStream.WriteAsync(new ServerStremReply { Result = req.Number1 - req.Number2 }); await Task.Delay(500); } }); }