TsgcTCPClient › Ereignisse › OnBeforeHeartBeat
Wird vor jedem HeartBeat-Tick ausgelöst, sodass die Anwendung eine benutzerdefinierte Keep-Alive-Nutzlast senden kann.
property OnBeforeHeartBeat: TsgcWSOnBeforeHeartBeatEvent;
// TsgcWSOnBeforeHeartBeatEvent = procedure(Sender: TObject; const Connection: TsgcWSConnection; var Handled: Boolean) of object
—
Wenn HeartBeat aktiviert ist, wacht der Client alle HeartBeat.Interval Sekunden auf, um die TCP-Verbindung aufrechtzuerhalten. Da der reine TCP-Transport keinen integrierten Ping-Frame hat, ist der Standard-Heartbeat ein No-Op und es wird erwartet, dass die Anwendung die Nutzlast ausgibt, die der Peer erwartet (zum Beispiel ein protokollspezifisches Keep-Alive-Paket). OnBeforeHeartBeat wird bei jedem Tick ausgelöst, sodass die Anwendung diese Nutzlast über die bereitgestellte Connection schreiben kann; das Setzen von Handled auf True dokumentiert lediglich, dass die Anwendung sich um den Heartbeat gekümmert hat, und es bei False zu belassen ist gleichwertig, da es kein Standardpaket zum Senden gibt.
procedure OnBeforeHeartBeat(Sender: TObject; const Connection: TsgcWSConnection;
var Handled: Boolean);
begin
Connection.WriteData('PING' + #13#10);
Handled := True;
end;