TsgcWebSocketClient › Eigenschaften › WatchDog
Stellt nach einer unerwarteten Trennung automatisch die Verbindung zum Server wieder her.
property WatchDog: TsgcWSWatchDogClient_Options read FWatchDog write SetWatchDog;
Enabled=False, Interval=10, Attempts=0, Backoff=wdbFixed, BackoffMultiplier=2.0, MaxInterval=0, Jitter=0
Wenn WatchDog.Enabled True ist, erkennt der Client eine abgebrochene Verbindung und versucht alle Interval Sekunden, sich erneut zu verbinden. Attempts steuert die maximale Anzahl der Wiederverbindungsversuche; null bedeutet unbegrenzte Wiederholungen. Verwenden Sie das Ereignis OnBeforeWatchDog, um den Wiederverbindungsablauf anzupassen, zum Beispiel um auf einen sekundären Server zurückzufallen oder die Wiederholung abzubrechen, indem Sie Handled auf True setzen.
Die Verzögerung zwischen Wiederverbindungsversuchen kann exponentiell wachsen, statt fest zu bleiben. Backoff wählt die Strategie: wdbFixed (Standard) wartet Interval Sekunden zwischen jedem Versuch, während wdbExponential die Verzögerung nach jedem fehlgeschlagenen Versuch mit BackoffMultiplier (Standard 2.0) multipliziert, beginnend bei Interval. MaxInterval begrenzt die berechnete Verzögerung in Sekunden (0 bedeutet keine Obergrenze). Jitter fügt der Verzögerung einen Zufallsfaktor zwischen 0 und 1 hinzu (zum Beispiel variiert 0.2 jede Verzögerung um bis zu ±20%), was verhindert, dass viele Clients nach einem Serverneustart genau zur gleichen Zeit erneut verbinden; das Setzen von Jitter auf einen Wert größer als null aktiviert die Backoff-Engine auch dann, wenn Backoff auf wdbFixed steht. Der Versuchszähler wird zurückgesetzt, sobald eine Verbindung hergestellt ist.
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;