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は再接続試行の最大回数を制御します。ゼロは無制限の再試行を意味します。OnBeforeWatchDogイベントを使用して再接続フローをカスタマイズできます。たとえば、セカンダリサーバーにフォールバックしたり、HandledをTrueに設定して再試行をキャンセルしたりできます。
再接続試行間の遅延は、固定のままにする代わりに指数関数的に増加させることができます。Backoff は戦略を選択します。wdbFixed(デフォルト)は各試行の間に Interval 秒待機し、wdbExponential は試行が失敗するたびに Interval を起点として遅延に BackoffMultiplier(デフォルト 2.0)を乗算します。MaxInterval は計算された遅延の上限を秒単位で指定します(0 は上限なしを意味します)。Jitter は遅延に 0 から 1 の間のランダム係数を追加します(たとえば 0.2 は各遅延を最大 ±20% 変動させます)。これにより、サーバーの再起動後に多数のクライアントがまったく同じタイミングで再接続することを防ぎます。Jitter をゼロより大きく設定すると、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;