static async Task Main(string[] args) { Console.WriteLine("Hello World!"); await Task.Delay(TimeSpan.FromSeconds(10)); using var channel = GrpcChannel.ForAddress("https://localhost:5001"); var client = new Pricing.PricingClient(channel); var req = new StockPriceRequest { Context = Context.Query, Symbol = "TSLA" }; var res = client.GetPriceStream(req); int i = 0; while (await res.ResponseStream.MoveNext()) { Console.WriteLine($"Stock: Tesla, Price: {res.ResponseStream.Current}"); if (i++ == 10) { break; } } res.Dispose(); Console.ReadLine(); }
public async IAsyncEnumerable <string> Subscribe( string uic, string assetType, [EnumeratorCancellation] CancellationToken cancellationToken) { var url = Environment.GetEnvironmentVariable("PRICING_STREAM_ENDPOINT"); using var channel = GrpcChannel.ForAddress(url); var client = new Pricing.PricingClient(channel); var request = new PriceRequest { Uic = uic, AssetType = assetType }; var streamReader = client.Subscribe(request).ResponseStream; yield return($"Info: Opened channel to : {url}"); yield return("Info: Waiting for data from gRPC server"); while (await streamReader.MoveNext()) { cancellationToken.ThrowIfCancellationRequested(); yield return($"Data: {streamReader.Current}"); } Console.WriteLine("Gracefully ended."); }
private static async Task SubscribeToStream() { using var channel = GrpcChannel.ForAddress("http://localhost:5000"); var client = new Pricing.PricingClient(channel); var request = new PriceRequest { Uic = "211", AssetType = "Stock" }; var streamReader = client.Subscribe(request).ResponseStream; while (await streamReader.MoveNext()) { Console.WriteLine($"Received: {streamReader.Current}"); } Console.WriteLine("Gracefully ended."); }