public override async Task ServerStream(ServerStreamingRequest request, IServerStreamWriter <ServerStreamingResponse> responseStream, ServerCallContext context)
        {
            string output = string.Empty;

            Console.WriteLine("Server received request on " + DateTime.Now);
            Console.WriteLine(request.ToString());

            foreach (int i in Enumerable.Range(1, 1000))
            {
                output = "Hello " + request.Stream.FirstName + " " + request.Stream.LastName + " Response count " + i;
                await responseStream.WriteAsync(new ServerStreamingResponse()
                {
                    ServerResponse = output
                });
            }
        }
Пример #2
0
        static async Task Main(string[] args)
        {
            Channel channel = new Channel(serverUrl, ChannelCredentials.Insecure);

            await channel.ConnectAsync().ContinueWith((task) =>
            {
                if (task.Status == TaskStatus.RanToCompletion)
                {
                    Console.WriteLine("Client connected successfully.");
                }
            });

            var client = new ServerStreamingService.ServerStreamingServiceClient(channel);

            var serverStream = new ServerStreamMsg
            {
                FirstName = "First Name",
                LastName  = "Last Name"
            };

            var serverStreamingRequest = new ServerStreamingRequest()
            {
                Stream = serverStream
            };

            var response = client.ServerStream(serverStreamingRequest);

            while (await response.ResponseStream.MoveNext())
            {
                Console.WriteLine("Response : " + response.ResponseStream.Current.ServerResponse);
                await Task.Delay(200);
            }
            channel.ShutdownAsync().Wait();

            Console.ReadKey();
        }