TsgcWebSocketClient | Client Keep Connection Open

Sobald sich Ihr Client mit einem Server verbunden hat, kann die Verbindung manchmal aufgrund schlechten Signals, Verbindungsfehlern usw. geschlossen werden. Es gibt 2 Eigenschaften, die helfen, die Verbindung aktiv zu halten.

 

HeartBeat

Die Eigenschaft HeartBeat ermöglicht Ihnen, alle X Sekunden einen Ping zu senden, um die Verbindung am Leben zu erhalten. Einige Server schließen TCP-Verbindungen, wenn keine Daten zwischen Peers ausgetauscht werden. HeartBeat löst dieses Problem, indem es in einem bestimmten Intervall einen Ping sendet. Normalerweise reicht dies aus, um eine Verbindung aktiv zu halten, aber Sie können ein TimeOut-Intervall festlegen, wenn Sie die Verbindung schließen möchten, wenn eine Antwort vom Server nach X Sekunden nicht empfangen wird.

 

Beispiel: alle 30 Sekunden einen Ping senden


oClient := TsgcWebSocketClient.Create(nil);
oClient.HeartBeat.Interval := 30;
oClient.HeartBeat.Timeout := 0;
oClient.HeartBeat.Enabled := true;
oClient.Active := true;

Es gibt ein Ereignis namens OnBeforeHeartBeat, das es ermöglicht, das HeartBeat-Verhalten anzupassen. Standardmäßig sendet der Client, wenn HeartBeat aktiviert ist, alle X Sekunden einen WebSocket-Ping, wie durch die Eigenschaft HeartBeat.Interval festgelegt.

OnBeforeHeartBeat hat einen Parameter namens Handled, der standardmäßig false ist, was bedeutet, dass der Ablauf von der TsgcWebSocketClient-Komponente gesteuert wird. Wenn Sie den Wert auf True setzen, wird der Ping nicht gesendet, und Sie können Ihre benutzerdefinierte Nachricht über die Connection-Klasse senden.

 

WatchDog

Wenn WatchDog aktiviert ist und der Client eine Trennung erkennt, versucht WatchDog alle X Sekunden eine erneute Verbindung, bis die Verbindung wieder aktiv ist.

 

Beispiel: alle 10 Sekunden nach einer Trennung mit unbegrenzten Versuchen erneut verbinden.

 


oClient := TsgcWebSocketClient.Create(nil);
oClient.WatchDog.Interval := 10;
oClient.WatchDog.Attempts := 0;
oClient.WatchDog.Enabled := true;
oClient.Active := true;

Sie können das Ereignis OnBeforeWatchDog verwenden, um den Server zu ändern, mit dem der Client eine Verbindung herstellen wird. Beispiel: Nach 3 Versuchen, wenn der Client keine Verbindung zu einem Server herstellen kann, versucht er, eine Verbindung zu einem sekundären Server herzustellen.

Die Eigenschaft Handled, wenn auf True gesetzt, bedeutet, dass der Client nicht versucht, sich erneut zu verbinden.