private static async void Grpc() { //1、开始调用连接 using var channel = GrpcChannel.ForAddress("https://localhost:5001"); // 2、创建客户端 var client = new GrpcService.GrpcServiceClient(channel); #region 务器流式处理 (服务器可以响应多个函数) var responsesStream = client.StudentServer( new RmRequest { Name = "小强" } ); var readStream = responsesStream.ResponseStream; // 1、获取一次输出(for 循环每一次写出) while (await readStream.MoveNext()) { RmResponse rmResponse = readStream.Current; Console.WriteLine($"客户端收到请求:{rmResponse.Message}"); } Console.WriteLine("Press any key to exit..."); #endregion }
public override async Task StudentServer(RmRequest request, IServerStreamWriter <RmResponse> responseStream, ServerCallContext context) { // 1、打印客户端信息 Console.WriteLine($"request学生姓名:{request.Name}"); // 2、流式处理(函数流) for (int i = 0; i < 20; i++) { Thread.Sleep(1000); RmResponse rmResponse = new RmResponse() { Message = "函数流处理,结果:" + i }; await responseStream.WriteAsync(rmResponse); } }