Пример #1
0
        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}");
                    }
                });
            }
        }
Пример #2
0
 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);
         }
     });
 }