示例#1
0
        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.");
        }