TsgcTCPClient › Eventi › OnError
Si attiva ogni volta che viene segnalato un errore non fatale sulla connessione TCP.
property OnError: TsgcWSErrorEvent;
// TsgcWSErrorEvent = procedure(Connection: TsgcWSConnection; const Error: string) of object
—
OnError segnala problemi a livello di trasporto rilevati durante l'invio o la ricezione di dati sul socket TCP, come un handshake TLS fallito, un timeout del heartbeat o un errore generato durante la gestione di un payload ricevuto. Il parametro Error contiene una descrizione testuale dell'errore; il parametro Connection identifica la sessione interessata. Per le eccezioni non gestite (errori del socket, violazioni di accesso...) utilizzare OnException. Quando Connection è assegnato, il componente chiude quella connessione una volta generato OnError, indipendentemente dalle opzioni: l'handler è normalmente già terminato a quel punto, ma con NotifyEvents impostato su neAsynchronous un errore generato su un thread secondario viene accodato al thread principale e il suo handler può essere eseguito dopo che la connessione è già stata chiusa. Quando Connection è nil, non viene chiuso nulla.
OnError può generarsi con Connection = nil, quindi un handler deve verificare Connection prima di utilizzarlo. WriteData e WriteAndWaitData segnalano in questo modo un messaggio che non è stato possibile inviare perché il client non è connesso. Il parametro Error è in questo caso Data not sent, the client is not connected or its handshake has not completed. (resourcestring S_ERROR_CLIENT_NOT_CONNECTED), e l'evento viene generato sul thread che ha chiamato il metodo, prima che il metodo restituisca il controllo. Anche un invio che fallisce dopo che il client si è riconnesso viene segnalato con Connection = nil, in modo che la nuova connessione non venga chiusa. Impostare Options.RaiseDisconnectExceptions su False nel codice per disattivare la segnalazione dei messaggi che non è stato possibile inviare.
procedure OnError(Connection: TsgcWSConnection; const Error: string);
begin
WriteLn('#error: ' + Error);
end;