public override async Task GetReplyStream(StreamContextRequest request, IServerStreamWriter <StreamReply> responseStream, ServerCallContext context)
        {
            _logger.LogInformation("Stream request from {Name}", request.Name);
            while (!context.CancellationToken.IsCancellationRequested)
            {
                _logger.LogInformation("Sending stream update to {Name}", request.Name);
                await responseStream.WriteAsync(GetCurrentStreamReply(request));

                await Task.Delay(TimeSpan.FromSeconds(0.5));
            }
            _logger.LogInformation("Stream disconnected by {Name}", request.Name);
        }
 private StreamReply GetCurrentStreamReply(StreamContextRequest request) => new StreamReply
 {
     Message = $"{DateTime.Now}: Hi {request.Name}. Have the current random: {_randomService.CurrentRandomInt}"
 };
 public override Task <StreamReply> GetReply(StreamContextRequest request, ServerCallContext context)
 {
     _logger.LogInformation("Single reply requested by {Name}", request.Name);
     return(Task.FromResult(GetCurrentStreamReply(request)));
 }