TsgcWebSocketClient › 속성 › WatchDog
예기치 않은 연결 끊김 후 서버에 자동으로 다시 연결합니다.
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이면, 클라이언트는 끊어진 연결을 감지하고 Interval초마다 재연결을 시도합니다. Attempts는 최대 재연결 시도 수를 제어합니다. 0은 무제한 재시도를 의미합니다. 재연결 흐름을 사용자 정의하려면 OnBeforeWatchDog 이벤트를 사용하십시오. 예를 들어 보조 서버로 폴백하거나 Handled를 True로 설정하여 재시도를 취소할 수 있습니다.
재연결 시도 사이의 지연 시간은 고정 대신 지수적으로 늘어날 수 있습니다. Backoff가 전략을 선택합니다. wdbFixed(기본값)는 매 시도 사이에 Interval초를 기다리는 반면, wdbExponential은 Interval에서 시작하여 실패한 시도마다 지연 시간에 BackoffMultiplier(기본값 2.0)를 곱합니다. MaxInterval은 계산된 지연 시간의 상한을 초 단위로 제한합니다(0은 상한 없음). Jitter는 지연 시간에 0과 1 사이의 무작위 계수를 더하므로(예를 들어 0.2는 각 지연 시간을 최대 ±20%까지 변동시킵니다) 서버가 재시작된 후 많은 클라이언트가 정확히 같은 시각에 재연결하는 것을 방지합니다. Jitter를 0보다 크게 설정하면 Backoff가 wdbFixed여도 백오프 엔진이 활성화됩니다. 시도 카운터는 연결이 수립되면 재설정됩니다.
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;