TsgcTCPClient › Eventos › OnError

OnError Evento

Se activa cada vez que se notifica un error no fatal en la conexión TCP.

Sintaxis

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

Valor Predeterminado

—

Observaciones

OnError notifica problemas a nivel de transporte detectados al enviar o recibir datos en el socket TCP, como un error en el protocolo de enlace TLS, un tiempo de espera de heartbeat o un error generado al despachar una carga útil recibida. El parámetro Error contiene una descripción textual del fallo; el parámetro Connection identifica la sesión afectada. Para excepciones no controladas (errores de socket, violaciones de acceso...) use OnException en su lugar. Cuando Connection está asignado, el componente cierra esa conexión una vez que se ha generado OnError, sean cuales sean las opciones: el manejador normalmente ya ha retornado en ese momento, pero con NotifyEvents establecido en neAsynchronous, un error generado en un hilo secundario se encola hacia el hilo principal y su manejador puede ejecutarse después de que la conexión ya se haya cerrado. Cuando Connection es nil, no se cierra nada.

OnError puede activarse con Connection = nil, por lo que un manejador debe comprobar Connection antes de utilizarlo. WriteData y WriteAndWaitData informan de este modo un mensaje que no pudo enviarse porque el cliente no está conectado. El parámetro Error es entonces Data not sent, the client is not connected or its handshake has not completed. (resourcestring S_ERROR_CLIENT_NOT_CONNECTED), y el evento se activa en el hilo que invocó el método, antes de que el método retorne. Una escritura que falla después de que el cliente se haya reconectado también se informa con Connection = nil, de modo que la nueva conexión no se cierra. Establezca Options.RaiseDisconnectExceptions en False en el código para desactivar el aviso de los mensajes que no se pudieron enviar.

Ejemplo


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

Volver a Eventos