static async Task Main(string[] args) { var client = new BlazorClient(); client.JSInterop += async(args) => { if (args.Identifier == "Blazor._internal.navigationManager.navigateTo") { var jsonDocument = JsonDocument.Parse(args.ArgsJson); var array = jsonDocument.RootElement; var uri = array[0].GetString(); if (array[1].GetBoolean()) { throw new NotSupportedException("Force load is not supported."); } await client.NavigateAsync(ServerUrl + "/" + uri); } }; await client.ConnectAsync(new Uri(ServerUrl)); await Navigate(client); await Clicks(client); await NavigateOnClick(client); await TypeAhead(client); Console.WriteLine("Done"); }
async static Task <int> Main(string[] args) { if (args.Length == 0) { Console.WriteLine("usage: DemoClient <url> <count>"); return(1); } var cts = new CancellationTokenSource(); Console.CancelKeyPress += (sender, e) => { Console.Write("Cancelling..."); cts.Cancel(); }; var uri = new Uri(args[0]); var count = int.Parse(args[1]); var tasks = new List <Task>(); for (var i = 0; i < count; i++) { Console.WriteLine($"Creating client {i}..."); var client = new BlazorClient() { DefaultOperationTimeout = TimeSpan.FromSeconds(5), }; while (true) { try { var connected = await client.ConnectAsync(uri, connectAutomatically : true); if (!connected) { throw new InvalidOperationException("Failed to connect."); } break; } catch (HttpRequestException ex) when(ex.Message.Contains("429")) { Console.WriteLine("Getting rate limited. Waiting..."); } await Task.Delay(TimeSpan.FromSeconds(5)); } tasks.Add(Task.Run(() => RunAsync(uri, client, cts.Token))); } Console.WriteLine($"Started {count} clients."); await Task.WhenAll(tasks); return(0); }
static async Task Main(string[] args) { var client = new BlazorClient(); await client.ConnectAsync(new Uri(ServerUrl)); await VerifyNavigationAsync(client); Console.WriteLine("Done"); }