Esempio n. 1
0
        //模式4:针对 服务端 为 客户端+服务端 流示:创建基于同一个channel的客户端 Welcomer
        public static async void TestClientServerStream(GrpcChannel GprcChannel)
        {
            var client = new Welcomer.WelcomerClient(GprcChannel);

            using var call = client.SayHelloBiStream();

            Console.WriteLine("Starting background task to receive messages");
            var readTask = Task.Run(async() => {
                //开启一个后台接收线程
                await foreach (var response in call.ResponseStream.ReadAllAsync())
                {
                    Console.WriteLine("ClientServerStream receive:" + response.Message);
                }
            });

            for (var i = 0; i < 3; i++)
            {
                //发送多个客户端请求
                await call.RequestStream.WriteAsync(new HelloRequestW { Name = "SayHelloClientServerStream " });
            }
            //开始发送“我客户端已经发送完毕”
            await call.RequestStream.CompleteAsync();


            await readTask; //等待后台接收线程完毕
        }
Esempio n. 2
0
        //模式3:针对服务端为客户端流示:创建基于同一个channel的客户端 Welcomer
        public static async void TestClientStream(GrpcChannel GprcChannel)
        {
            var client = new Welcomer.WelcomerClient(GprcChannel);

            using var call = client.SayHelloClientStream();

            for (var i = 0; i < 3; i++)
            {
                //发送多个客户端请求
                await call.RequestStream.WriteAsync(new HelloRequestW { Name = "SayHelloClientStream" });
            }
            //通知服务端“我客户端已经发送完毕”
            await call.RequestStream.CompleteAsync();

            var response = await call;

            Console.WriteLine($"SayHelloClientStream Response: {response.Message}");
        }
Esempio n. 3
0
        //模式2:针对服务端为一元调用示例 以及 针对服务端为服务端流示, 创建一个基于channel的客户端Greeter
        public static async void TestServerStreamClient(GrpcChannel GprcChannel)
        {
            //针对服务端为一元调用示例
            var client2 = new Welcomer.WelcomerClient(GprcChannel);
            var reply2  = await client2.SayHelloAsync(new HelloRequestW { Name = "SayHelloAsync " });

            Console.WriteLine("SayHelloAsync: " + reply2.Message);


            //针对服务端为服务端流示
            var call = client2.SayHelloServerStream(new HelloRequestW {
                Name = "ServerStreamRequest "
            });

            while (await call.ResponseStream.MoveNext())
            {
                //直到服务端对应SayHelloServerStream方法调用完毕,MoveNext才会结束。
                Console.WriteLine("SayHelloServerStream: " + call.ResponseStream.Current.Message);
            }
        }