TsgcWebSocketClientÖzellikler › WatchDog

WatchDog Özellik

Beklenmedik bir bağlantı kesilmesinden sonra sunucuya otomatik olarak yeniden bağlanır.

Sözdizimi

property WatchDog: TsgcWSWatchDogClient_Options read FWatchDog write SetWatchDog;

Varsayılan Değer

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

Remarks

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.

Örnek


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;

Özelliklere Dön