diff --git a/DigitalData.Auth.Client/AuthClient.cs b/DigitalData.Auth.Client/AuthClient.cs index 2e69171..4601509 100644 --- a/DigitalData.Auth.Client/AuthClient.cs +++ b/DigitalData.Auth.Client/AuthClient.cs @@ -39,11 +39,32 @@ public class AuthClient : IAuthClient, IHostedService public async Task StartAsync(CancellationToken cancellationToken = default) { - await _connection.StartAsync(cancellationToken); + while(!await TryStartConnectionAsync(cancellationToken)) + { + if (_params.RetryDelay is not null) + await Task.Delay(_params.RetryDelay.Value.Milliseconds, cancellationToken); + else + return; + } + IsConnected = true; await GetAllPublicKeysAsync(); } + private async Task TryStartConnectionAsync(CancellationToken cancellationToken = default) + { + try + { + await _connection.StartAsync(cancellationToken); + return true; + } + catch(HttpRequestException ex) + { + _logger?.LogError(ex, "Connection is failed. {message}", ex.Message); + return false; + } + } + public async Task StopAsync(CancellationToken cancellationToken) { await _connection.StopAsync(cancellationToken);