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 }); } }
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(); }