TsgcWebSocketClient | Maintenir la connexion client ouverte

Une fois votre client connecté à un serveur, la connexion peut parfois être fermée en raison d'un signal faible, d'erreurs de connexion, etc. Il y a 2 propriétés qui aident à maintenir la connexion active.

 

HeartBeat

HeartBeat vous permet d' envoyer un Ping toutes les X secondes pour maintenir la connexion active. Certains serveurs ferment les connexions TCP s'il n'y a pas d'échange de données entre les pairs. HeartBeat résout ce problème en envoyant un ping à un intervalle spécifique. En général, cela suffit à maintenir une connexion active, mais vous pouvez définir un intervalle TimeOut si vous souhaitez fermer la connexion lorsqu'aucune réponse du serveur n'est reçue après X secondes.

 

Exemple : envoyer un ping toutes les 30 secondes


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

Il existe un événement appelé OnBeforeHeartBeat qui permet de personnaliser le comportement de HeartBeat. Par défaut, si HeartBeat est activé, le client enverra un ping WebSocket toutes les X secondes comme défini par la propriété HeartBeat.Interval.

OnBeforeHeartBeat a un paramètre appelé Handled, par défaut false, ce qui signifie que le flux est contrôlé par le composant TsgcWebSocketClient. Si vous définissez la valeur à True, le ping ne sera pas envoyé et vous pouvez envoyer votre message personnalisé en utilisant la classe Connection.

 

WatchDog

Si WatchDog est activé, lorsque le client détecte une déconnexion, WatchDog tente de se reconnecter toutes les X secondes jusqu'à ce que la connexion soit à nouveau active.

 

Exemple : se reconnecter toutes les 10 secondes après une déconnexion avec un nombre illimité de tentatives.

 


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

Vous pouvez utiliser l'événement OnBeforeWatchDog pour changer le serveur auquel le client tentera de se connecter. Exemple : après 3 tentatives, si le client ne peut pas se connecter à un serveur, il tentera de se connecter à un serveur secondaire.

La propriété Handled, si elle est définie à True, signifie que le client n'essaiera pas de se reconnecter.