TsgcWebSocketClient | Mantieni la Connessione Client Aperta

Una volta che il client si è connesso a un server, la connessione può talvolta essere chiusa a causa di segnale debole, errori di connessione, ecc. Esistono 2 proprietà che aiutano a mantenere la connessione attiva.

 

HeartBeat

HeartBeat consente di inviare un Ping ogni X secondi per mantenere attiva la connessione. Alcuni server chiudono le connessioni TCP se non vengono scambiati dati tra i peer. HeartBeat risolve questo problema inviando un ping a un intervallo specifico. Di solito questo è sufficiente per mantenere attiva una connessione, ma è possibile impostare un intervallo di TimeOut per chiudere la connessione quando una risposta dal server non viene ricevuta dopo X secondi.

 

Esempio: inviare un ping ogni 30 secondi


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

È disponibile un evento denominato OnBeforeHeartBeat che consente di personalizzare il comportamento di HeartBeat. Per impostazione predefinita, se HeartBeat è abilitato, il client invierà un ping WebSocket ogni X secondi come impostato dalla proprietà HeartBeat.Interval.

OnBeforeHeartBeat ha un parametro chiamato Handled, per impostazione predefinita è false, il che significa che il flusso è controllato dal componente TsgcWebSocketClient. Se si imposta il valore su True, il ping non verrà inviato ed è possibile inviare un messaggio personalizzato utilizzando la classe Connection.

 

WatchDog

Se WatchDog è abilitato, quando il client rileva una disconnessione, WatchDog tenta di riconnettersi ogni X secondi finché la connessione non è nuovamente attiva.

 

Esempio: riconnessione ogni 10 secondi dopo una disconnessione con tentativi illimitati.

 


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

È possibile utilizzare l'evento OnBeforeWatchDog per cambiare il server a cui il client tenterà di connettersi. Esempio: dopo 3 tentativi, se il client non riesce a connettersi a un server, tenterà di connettersi a un server secondario.

La proprietà Handled, se impostata su True, significa che il client non tenterà di riconnettersi.