クライアントがサーバーに接続すると、信号の弱さ、接続エラーなどにより接続が 切断される場合があります。接続をアクティブに保つための2つのプロパティがあります。
HeartBeat プロパティを使用すると、X 秒ごとに Ping を送信して接続を維持できます。 サーバーによっては、ピア間でデータが交換されない場合に TCP 接続を閉じるものがあります。HeartBeat はこの問題を特定の間隔で ping を送信することで解決します。通常これで接続をアクティブに維持するのに十分ですが、サーバーから X 秒後にレスポンスが受信されない場合に接続を閉じるには TimeOut 間隔を設定できます。
使用例: 30秒ごとにピングを送信します。
oClient := TsgcWebSocketClient.Create(nil);
oClient.HeartBeat.Interval := 30;
oClient.HeartBeat.Timeout := 0;
oClient.HeartBeat.Enabled := true;
oClient.Active := true;
OnBeforeHeartBeat というイベントがあり、HeartBeat の動作をカスタマイズできます。デフォルトでは、HeartBeat が有効な場合、クライアントは HeartBeat.Interval プロパティで設定した X 秒ごとに WebSocket ping を送信します。
OnBeforeHeartBeatには Handledというパラメータがあり、デフォルトではfalseです。これは、フローが TsgcWebSocketClientコンポーネントによって制御されることを意味します。値をTrueに設定すると、ping は送信されず、Connectionクラスを使用してカスタムメッセージを送信できます。
WatchDog が有効な場合、クライアントが切断を検出すると、接続が再確立されるまで WatchDog は X 秒ごとに再接続を試みます。
使用例: 切断後に無制限の試行回数で 10 秒ごとに再接続します。
oClient := TsgcWebSocketClient.Create(nil);
oClient.WatchDog.Interval := 10;
oClient.WatchDog.Attempts := 0;
oClient.WatchDog.Enabled := true;
oClient.Active := true;
OnBeforeWatchDog イベントを使用して、クライアントが接続を試みるサーバーを変更できます。例: 3 回再試行した後、クライアントがサーバーに接続できない場合は、セカンダリサーバーへの接続を試みます。
Handled プロパティを True に設定すると、クライアントは再接続を試みません。