TsgcTCPClient › イベント › OnBeforeHeartBeat
各 HeartBeat ティックの前に発生し、アプリケーションがカスタムのキープアライブペイロードを送信できます。
property OnBeforeHeartBeat: TsgcWSOnBeforeHeartBeatEvent;
// TsgcWSOnBeforeHeartBeatEvent = procedure(Sender: TObject; const Connection: TsgcWSConnection; var Handled: Boolean) of object
—
HeartBeatが有効な場合、クライアントはHeartBeat.Interval秒ごとに起動してTCP接続を維持します。プレーンなTCPトランスポートには組み込みのpingフレームがないため、デフォルトのハートビートは何も行わず、ピアが期待するペイロード(例えばプロトコル固有のキープアライブパケット)をアプリケーションが送信することが期待されます。OnBeforeHeartBeatは各ティックで発生するので、アプリケーションは提供されたConnectionを通じてそのペイロードを書き込むことができます。HandledをTrueに設定すると、アプリケーションがハートビートを処理したことを示すだけであり、送信するデフォルトパケットが存在しないため、Falseのままにしても同等です。
procedure OnBeforeHeartBeat(Sender: TObject; const Connection: TsgcWSConnection;
var Handled: Boolean);
begin
Connection.WriteData('PING' + #13#10);
Handled := True;
end;