TsgcWebSocketClient | Client Keep Connection Open

クライアントがサーバーに接続すると、信号の弱さ、接続エラーなどにより接続が 切断される場合があります。接続をアクティブに保つための2つのプロパティがあります。

 

HeartBeat

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 が有効な場合、クライアントが切断を検出すると、接続が再確立されるまで 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 に設定すると、クライアントは再接続を試みません。