TsgcWebSocketClient | Exceptions client

Des erreurs surviennent parfois lors des communications : le serveur peut déconnecter une connexion parce qu'elle n'est pas autorisée ou qu'un message n'a pas le bon format. Il existe 2 événements dans lesquels les erreurs sont capturées.

OnError

Cet événement est déclenché chaque fois qu'il y a une erreur dans le protocole WebSocket, comme un type de message invalide, une chaîne utf8 invalide...

OnError se déclenche également avec Connection = nil lorsque WriteData, WriteAndWaitData ou Ping ne peuvent pas envoyer un message parce que le client n'est pas connecté, ou, pour WriteData et WriteAndWaitData, parce que 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. Aucune exception n'est levée vers l'appelant et le client n'est pas déconnecté, il faut donc toujours vérifier que Connection n'est pas nil avant de l'utiliser dans cet événement.


procedure OnError(Connection: TsgcWSConnection; const Error: string);
begin
  WriteLn('#error: ' + Error);
end;

 

OnException

Cet événement est déclenché chaque fois qu'une exception se produit, par exemple lors d'une écriture sur un socket qui n'est pas actif ou d'un accès à un objet qui n'existe pas.

 


procedure OnException(Connection: TsgcWSConnection; E: Exception);
begin
  WriteLn('#exception: ' + E.Message);
end;

Par défaut, lorsqu'une connexion est fermée par le serveur, une exception sera levée. Si vous ne souhaitez pas que ces exceptions soient levées, désactivez Options.RaiseDisconnectExceptions.

Options.RaiseDisconnectExceptions contrôle également le signalement par OnError des messages qui n'ont pas pu être envoyés parce que le client n'est pas connecté. Définissez-le sur False pour abandonner ces messages silencieusement, comme le faisaient les versions précédentes.