TsgcWebSocketClient › Propiedades › WatchDog
Se reconecta automáticamente al servidor tras una desconexión inesperada.
property WatchDog: TsgcWSWatchDogClient_Options read FWatchDog write SetWatchDog;
Enabled=False, Interval=10, Attempts=0, Backoff=wdbFixed, BackoffMultiplier=2.0, MaxInterval=0, Jitter=0
Cuando WatchDog.Enabled es True, el cliente detecta una conexión interrumpida e intenta reconectarse cada Interval segundos. Attempts controla el número máximo de intentos de reconexión; cero significa reintentos ilimitados. Use el evento OnBeforeWatchDog para personalizar el flujo de reconexión, por ejemplo para recurrir a un servidor secundario o cancelar el reintento estableciendo Handled en True.
El retardo entre intentos de reconexión puede crecer exponencialmente en lugar de permanecer fijo. Backoff selecciona la estrategia: wdbFixed (valor predeterminado) espera Interval segundos entre cada intento, mientras que wdbExponential multiplica el retardo por BackoffMultiplier (por defecto 2.0) después de cada intento fallido, comenzando desde Interval. MaxInterval limita el retardo calculado en segundos (0 significa sin límite). Jitter añade un factor aleatorio entre 0 y 1 al retardo (por ejemplo, 0.2 varía cada retardo hasta un ±20%), lo que evita que muchos clientes se reconecten exactamente al mismo tiempo tras un reinicio del servidor; establecer Jitter con un valor mayor que cero activa el motor de backoff incluso cuando Backoff es wdbFixed. El contador de intentos se reinicia una vez que se establece una conexión.
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;