TsgcWebSocketClientWłaściwości › WatchDog

WatchDog Właściwość

Automatycznie ponownie łączy się z serwerem po nieoczekiwanym rozłączeniu.

Składnia

property WatchDog: TsgcWSWatchDogClient_Options read FWatchDog write SetWatchDog;

Wartość domyślna

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

Uwagi

Gdy właściwość WatchDog.Enabled ma wartość True, klient wykrywa zerwane połączenie i próbuje ponownie nawiązać połączenie co Interval sekund. Parametr Attempts kontroluje maksymalną liczbę prób ponownego połączenia; wartość zero oznacza nieograniczoną liczbę prób. Zdarzenie OnBeforeWatchDog umożliwia dostosowanie przepływu ponownego połączenia, na przykład przełączenie się na serwer pomocniczy lub anulowanie próby przez ustawienie Handled na True.

Opóźnienie między próbami ponownego połączenia może rosnąć wykładniczo, zamiast pozostawać stałe. Backoff wybiera strategię: wdbFixed (domyślnie) czeka Interval sekund między kolejnymi próbami, natomiast wdbExponential mnoży opóźnienie przez BackoffMultiplier (domyślnie 2.0) po każdej nieudanej próbie, zaczynając od Interval. MaxInterval ogranicza obliczone opóźnienie w sekundach (0 oznacza brak limitu). Jitter dodaje do opóźnienia losowy współczynnik od 0 do 1 (na przykład 0.2 zmienia każde opóźnienie o maksymalnie ±20%), co zapobiega ponownemu łączeniu się wielu klientów dokładnie w tym samym momencie po restarcie serwera; ustawienie Jitter na wartość większą od zera włącza mechanizm backoffu nawet wtedy, gdy Backoff ma wartość wdbFixed. Licznik prób jest zerowany po nawiązaniu połączenia.

Przykład


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;

Wróć do Właściwości