Example #1
0
        static async Task Main(string[] args)
        {
            // The port number(5001) must match the port of the gRPC server.
            var channel = GrpcChannel.ForAddress("https://localhost:20987");
            var client  = new Service1.Service1Client(channel);
            var client2 = new Service2.Service2Client(channel);

            for (var i = 0; i < 10; i++)
            {
                try
                {
                    //var reply = await client.SendAsync(new Service1Command { Name = "GrpcCli" });
                    //Console.WriteLine("cli1: " + reply.Message);
                    var reply2 = await client2.SendAsync(new Service2Command { Name = "GrpcCli" });

                    Console.WriteLine("cli2: " + reply2.Message);
                    await Task.Delay(1000);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }
            }
            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
        }
        async static Task Main(string[] args)
        {
            //discover service
            ConsulClient client = new ConsulClient();
            var          loginServiceDiscoverResponse = await client.Health.Service("Login");

            var loginServiceAddresses = loginServiceDiscoverResponse.Response;

            if (loginServiceAddresses.Length <= 0)
            {
                Console.WriteLine("没有找到Login登录服务,请先启动服务");
                return;
            }
            //do login and get token
            var loginResponse = GetLoginToken(loginServiceAddresses[0]);

            if (!loginResponse.Success)
            {
                Console.WriteLine($"登录失败,原因:{loginResponse.ErrMsg}");
                return;
            }

            var serviceResponse = await client.Health.Service("Service1");

            var serviceAddress = serviceResponse.Response;

            if (serviceAddress.Length <= 0)
            {
                Console.WriteLine("没有找到服务Service1,请先启动服务");
                return;
            }
            //use first address
            Channel channel        = new Channel($"{serviceAddress[0].Service.Address}:{serviceAddress[0].Service.Port}", ChannelCredentials.Insecure);
            var     serviceClient  = new Service1.Service1Client(channel);
            var     requestJsonStr = "{Name:\"server1Client\"}";
            var     request        = JsonConvert.DeserializeObject <HelloRequest>(requestJsonStr);

            Metadata metadata = new Metadata();

            metadata.Add("accessToken", loginResponse.Token);
            var callOption = new CallOptions().WithHeaders(metadata);

            var reply = serviceClient.Hello1(request, callOption);

            Console.WriteLine($"Greeting :{reply.Message}");
            channel.ShutdownAsync().Wait();
            Console.WriteLine("按回车键退出");
            Console.ReadLine();
        }