TsgcWebSocketClient | Excepciones del cliente

A veces se producen errores en las comunicaciones: el servidor puede desconectar una conexión porque no está autorizada o porque un mensaje no tiene el formato correcto. Hay 2 eventos donde se capturan los errores.

OnError

Este evento se dispara cada vez que se produce un error en el protocolo WebSocket, como tipo de mensaje no válido, cadena utf8 no válida...

OnError también se dispara con Connection = nil cuando WriteData, WriteAndWaitData o Ping no pueden enviar un mensaje porque el cliente no está conectado, o, en el caso de WriteData y WriteAndWaitData, porque el handshake de WebSocket aún no se ha completado. El parámetro Error es entonces Data not sent, the client is not connected or its handshake has not completed. No se genera ninguna excepción hacia el llamador y el cliente no se desconecta, así que compruebe siempre si Connection es nil antes de utilizarlo en este evento.


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

 

OnException

Este evento se dispara cada vez que se produce una excepción, como al escribir en un socket que no está activo o al acceder a un objeto que no existe.

 


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

Por defecto, cuando una conexión es cerrada por el servidor, se generará una excepción. Si no desea que se generen estas excepciones, deshabilite Options.RaiseDisconnectExceptions.

Options.RaiseDisconnectExceptions también controla el aviso de OnError de los mensajes que no se pudieron enviar porque el cliente no está conectado. Establézcalo en False para descartar esos mensajes en silencio, como hacían las versiones anteriores.