TsgcWebSocketClient › Événements › OnError

OnError Événement

Se déclenche chaque fois qu'une erreur de protocole WebSocket se produit sur la connexion.

Syntaxe

property OnError: TsgcWSErrorEvent;
// TsgcWSErrorEvent = procedure(Connection: TsgcWSConnection; const Error: string) of object

Valeur par défaut

—

Remarques

OnError signale les problèmes au niveau du protocole détectés par la couche WebSocket, tels qu'un type de message invalide, une trame malformée ou une charge utile UTF-8 invalide lorsque Options.ValidateUTF8 est activé. Le paramètre Error contient une description textuelle de l'échec ; le paramètre Connection identifie la session affectée. Pour les exceptions non gérées (erreurs de socket, violations d'accès...) utiliser OnException à la place. Lorsque Connection est renseigné, le composant ferme cette connexion une fois que OnError a été levé, quelles que soient les options : le gestionnaire est normalement déjà retourné à ce moment, mais avec NotifyEvents défini sur neAsynchronous, une erreur levée sur un thread secondaire est mise en file d'attente vers le thread principal et son gestionnaire peut s'exécuter après que la connexion a été fermée. Lorsque Connection est nil, rien n'est fermé.

OnError peut se déclencher avec Connection = nil, un gestionnaire doit donc vérifier Connection avant de l'utiliser. WriteData, WriteAndWaitData et Ping signalent ainsi un message qui n'a pas pu être envoyé parce que le client n'est pas connecté, et WriteData et WriteAndWaitData également lorsque le handshake WebSocket ne s'est pas encore terminé. Le paramètre Error vaut alors Data not sent, the client is not connected or its handshake has not completed. (resourcestring S_ERROR_CLIENT_NOT_CONNECTED), et l'événement se déclenche sur le thread qui a appelé la méthode, avant que la méthode ne retourne. Un envoi qui échoue après que le client s'est reconnecté est également signalé avec Connection = nil, de sorte que la nouvelle connexion n'est pas fermée. Définissez Options.RaiseDisconnectExceptions sur False pour désactiver le signalement des messages qui n'ont pas pu être envoyés.

Exemple


procedure OnError(Connection: TsgcWSConnection; const Error: string);
begin
  if Connection = nil then
    // a write or ping found no connection, nothing was sent
    WriteLn('#not sent: ' + Error)
  else
    WriteLn('#error: ' + Error);
end;

Retour aux événements