TsgcWebSocketClientProperties › WatchDog

WatchDog Proprietà

Si riconnette automaticamente al server dopo una disconnessione imprevista.

Sintassi

property WatchDog: TsgcWSWatchDogClient_Options read FWatchDog write SetWatchDog;

Valore predefinito

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

Note

Quando WatchDog.Enabled è True, il client rileva una connessione interrotta e tenta di riconnettersi ogni Interval secondi. Attempts controlla il numero massimo di tentativi di riconnessione; zero significa tentativi illimitati. Utilizzare l'evento OnBeforeWatchDog per personalizzare il flusso di riconnessione, ad esempio per ricorrere a un server secondario o annullare il tentativo impostando Handled su True.

Il ritardo tra i tentativi di riconnessione può crescere in modo esponenziale invece di rimanere fisso. Backoff seleziona la strategia: wdbFixed (predefinito) attende Interval secondi tra ogni tentativo, mentre wdbExponential moltiplica il ritardo per BackoffMultiplier (predefinito 2.0) dopo ogni tentativo non riuscito, partendo da Interval. MaxInterval limita il ritardo calcolato in secondi (0 significa nessun limite). Jitter aggiunge un fattore casuale tra 0 e 1 al ritardo (ad esempio 0.2 fa variare ogni ritardo fino a ±20%), il che impedisce che molti client si riconnettano esattamente nello stesso momento dopo un riavvio del server; impostare Jitter a un valore maggiore di zero abilita il motore di backoff anche quando Backoff è wdbFixed. Il contatore dei tentativi viene azzerato una volta stabilita una connessione.

Esempio


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;

Torna alle Proprietà