In Angular CLI middleware, remove additional level of timeouts since it's now covered upstream. Part of #1447

This commit is contained in:
Steve Sanderson
2018-01-03 11:44:31 +00:00
parent 15d2f5a898
commit d6588c31bf

View File

@@ -102,34 +102,25 @@ namespace Microsoft.AspNetCore.SpaServices.AngularCli
{ {
// To determine when it's actually ready, try making HEAD requests to '/'. If it // To determine when it's actually ready, try making HEAD requests to '/'. If it
// produces any HTTP response (even if it's 404) then it's ready. If it rejects the // produces any HTTP response (even if it's 404) then it's ready. If it rejects the
// connection then it's not ready. // connection then it's not ready. We keep trying forever because this is dev-mode
const int MaxAttempts = 10; // only, and only a single startup attempt will be made, and there's a further level
const int SecondsBetweenAttempts = 1; // of timeouts enforced on a per-request basis.
using (var client = new HttpClient())
var attemptsMade = 0;
var client = new HttpClient();
while (true)
{ {
try while (true)
{ {
// If we get any HTTP response, the CLI server is ready try
await client.SendAsync(
new HttpRequestMessage(HttpMethod.Head, cliServerUri),
new CancellationTokenSource(1000).Token);
return;
}
catch (Exception ex)
{
attemptsMade++;
if (attemptsMade >= MaxAttempts)
{ {
throw new InvalidOperationException( // If we get any HTTP response, the CLI server is ready
"Timed out waiting for the @angular/cli server to accept HTTP requests. " + await client.SendAsync(
"See inner exception for details.", ex); new HttpRequestMessage(HttpMethod.Head, cliServerUri),
new CancellationTokenSource(1000).Token);
return;
}
catch (Exception)
{
await Task.Delay(1000); // 1 second
} }
Thread.Sleep(SecondsBetweenAttempts * 1000);
} }
} }
} }