TsgcWebSocketClient › Özellikler › WatchDog
Beklenmedik bir bağlantı kesilmesinden sonra sunucuya otomatik olarak yeniden bağlanır.
property WatchDog: TsgcWSWatchDogClient_Options read FWatchDog write SetWatchDog;
Enabled=False, Interval=10, Attempts=0, Backoff=wdbFixed, BackoffMultiplier=2.0, MaxInterval=0, Jitter=0
WatchDog.Enabled True olduğunda, istemci düşen bir bağlantıyı algılar ve her Interval saniyede bir yeniden bağlanmaya çalışır. Attempts, maksimum yeniden bağlanma denemesi sayısını kontrol eder; sıfır, sınırsız yeniden deneme anlamına gelir. Yeniden bağlanma akışını özelleştirmek için OnBeforeWatchDog olayını kullanın, örneğin ikincil bir sunucuya geri dönmek veya Handled öğesini True olarak ayarlayarak yeniden denemeyi iptal etmek için.
Yeniden bağlanma denemeleri arasındaki gecikme sabit kalmak yerine üstel olarak büyüyebilir. Backoff stratejiyi seçer: wdbFixed (varsayılan) her deneme arasında Interval saniye bekler; wdbExponential ise Interval değerinden başlayarak her başarısız denemeden sonra gecikmeyi BackoffMultiplier (varsayılan 2.0) ile çarpar. MaxInterval, hesaplanan gecikmeyi saniye cinsinden sınırlar (0 sınır yok anlamına gelir). Jitter, gecikmeye 0 ile 1 arasında rastgele bir katsayı ekler (örneğin 0.2 her gecikmeyi ±%20'ye kadar değiştirir); bu da bir sunucu yeniden başlatıldıktan sonra çok sayıda istemcinin tam olarak aynı anda yeniden bağlanmasını önler. Jitter sıfırdan büyük ayarlandığında, Backoff wdbFixed olsa bile geri çekilme motoru etkinleşir. Deneme sayacı bir bağlantı kurulduğunda sıfırlanır.
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;