TsgcWebSocketClient | Client verbinding open houden

Zodra uw client verbinding heeft gemaakt met een server, kan de verbinding soms worden verbroken door een slecht signaal, verbindingsfouten, enz. Er zijn 2 eigenschappen die helpen de verbinding actief te houden.

 

HeartBeat

HeartBeat-eigenschap stelt u in staat om elke X seconden een Ping te verzenden om de verbinding actief te houden. Sommige servers sluiten TCP-verbindingen als er geen gegevens worden uitgewisseld tussen peers. HeartBeat lost dit probleem op door op een specifiek interval een ping te sturen. Dit is meestal voldoende om een verbinding actief te houden, maar u kunt een TimeOut-interval instellen als u de verbinding wilt sluiten wanneer er geen reactie van de server is ontvangen na X seconden.

 

Voorbeeld: stuur elke 30 seconden een ping


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

Er is een gebeurtenis genaamd OnBeforeHeartBeat waarmee u het HeartBeat-gedrag kunt aanpassen. Standaard verzendt de client, als HeartBeat is ingeschakeld, elke X seconden een WebSocket-ping zoals ingesteld door de eigenschap HeartBeat.Interval.

OnBeforeHeartBeat heeft een parameter genaamd Handled, die standaard False is, wat betekent dat de stroom wordt bestuurd door het component TsgcWebSocketClient. Als u de waarde instelt op True, wordt er geen ping verzonden en kunt u uw eigen bericht verzenden via de verbindingsklasse.

 

WatchDog

Als WatchDog is ingeschakeld en de client een verbreking detecteert, probeert WatchDog elke X seconden opnieuw verbinding te maken totdat de verbinding weer actief is.

 

Voorbeeld: elke 10 seconden opnieuw verbinden na een verbreking met onbeperkte pogingen.

 


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

U kunt de gebeurtenis OnBeforeWatchDog gebruiken om de server te wijzigen waarmee de client verbinding probeert te maken. Voorbeeld: na 3 pogingen, als de client geen verbinding kan maken met een server, probeert het verbinding te maken met een secundaire server.

De eigenschap Handled, indien ingesteld op True, betekent dat de client niet opnieuw probeert verbinding te maken.