TsgcWebSocketClientPropriedades › WatchDog

WatchDog Property

Reconecta automaticamente ao servidor após uma desconexão inesperada.

Sintaxe

property WatchDog: TsgcWSWatchDogClient_Options read FWatchDog write SetWatchDog;

Valor Padrão

Enabled=False, Interval=10, Attempts=0, Backoff=wdbFixed, BackoffMultiplier=2.0, MaxInterval=0, Jitter=0

Observações

Quando WatchDog.Enabled é True, o cliente detecta uma conexão interrompida e tenta reconectar a cada Interval segundos. Attempts controla o número máximo de tentativas de reconexão; zero significa retentativas ilimitadas. Use o evento OnBeforeWatchDog para personalizar o fluxo de reconexão, por exemplo, para recorrer a um servidor secundário ou cancelar a retentativa definindo Handled como True.

O atraso entre as tentativas de reconexão pode crescer exponencialmente em vez de permanecer fixo. Backoff seleciona a estratégia: wdbFixed (padrão) espera Interval segundos entre cada tentativa, enquanto wdbExponential multiplica o atraso por BackoffMultiplier (padrão 2.0) após cada tentativa falha, começando a partir de Interval. MaxInterval limita o atraso calculado em segundos (0 significa sem limite). Jitter adiciona um fator aleatório entre 0 e 1 ao atraso (por exemplo, 0.2 varia cada atraso em até ±20%), o que evita que muitos clientes se reconectem exatamente ao mesmo tempo após um reinício do servidor; definir Jitter maior que zero habilita o mecanismo de backoff mesmo quando Backoff é wdbFixed. O contador de tentativas é zerado assim que uma conexão é estabelecida.

Exemplo


oClient := TsgcWebSocketClient.Create(nil);
oClient.WatchDog.Interval := 10;
oClient.WatchDog.Attempts := 0;
// exponential backoff: 10, 20, 40... up to 300 seconds, with 20% jitter
oClient.WatchDog.Backoff := wdbExponential;
oClient.WatchDog.MaxInterval := 300;
oClient.WatchDog.Jitter := 0.2;
oClient.WatchDog.Enabled := true;
oClient.Active := true;

Voltar para Propriedades