示例#1
0
        static async Task Main(string[] args)
        {
            var channel = GrpcChannel.ForAddress("https://localhost:5001");

            _client = new Chat.ChatClient(channel);

            var userName = await SignInAsync();

            var roomId = await ChooseRoomAsync();

            var cancel     = new CancellationTokenSource();
            var listenTask = Task.Run(() => ListenAsync(roomId, userName, cancel.Token));

            Console.WriteLine("Enter /q to quit.");

            while (true)
            {
                Console.Write("> ");
                var line = Console.ReadLine();
                if (line?.Trim() == "/q")
                {
                    break;
                }
                if (!string.IsNullOrWhiteSpace(line))
                {
                    await _client.SayAsync(new SayRequest { RoomId = roomId, UserName = userName, Message = line });
                }
            }

            cancel.Cancel();
            await listenTask;
        }
示例#2
0
        static async Task Main(string[] args)
        {
            var clientCertificate = new X509Certificate2("client.pfx", "secretsquirrel");

            var handler = new HttpClientHandler
            {
                ServerCertificateCustomValidationCallback = (message, certificate2, arg3, arg4) =>
                {
                    Console.WriteLine(certificate2.Issuer);
                    Console.WriteLine(clientCertificate.Issuer);
                    return(certificate2.Issuer == clientCertificate.Issuer);
                }
            };

            handler.ClientCertificates.Add(clientCertificate);

            var http = new HttpClient(handler);

            var channel = GrpcChannel.ForAddress("https://localhost:5001", new GrpcChannelOptions
            {
                HttpClient = http
            });

            _client = new Chat.ChatClient(channel);

            var token = await SignInAsync();

            http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", token);

            var roomId = await ChooseRoomAsync();

            var cancel     = new CancellationTokenSource();
            var listenTask = Task.Run(() => ListenAsync(roomId, cancel.Token));

            Console.WriteLine("Enter /q to quit.");

            while (true)
            {
                Console.Write("> ");
                var line = Console.ReadLine();
                if (line?.Trim() == "/q")
                {
                    break;
                }
                if (!string.IsNullOrWhiteSpace(line))
                {
                    await _client.SayAsync(new SayRequest { RoomId = roomId, Message = line });
                }
            }

            cancel.Cancel();
            await listenTask;
        }