TsgcWebSocketClient › Eventi › OnError

OnError Evento

Si attiva ogni volta che si verifica un errore di protocollo WebSocket sulla connessione.

Sintassi

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

Valore predefinito

—

Note

OnError segnala problemi a livello di protocollo rilevati dal layer WebSocket, come un tipo di messaggio non valido, un frame malformato o un payload UTF-8 non valido quando Options.ValidateUTF8 è abilitato. Il parametro Error contiene una descrizione testuale dell'errore; il parametro Connection identifica la sessione interessata. Per le eccezioni non gestite (errori di socket, access violation...) utilizzi invece 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, WriteAndWaitData e Ping segnalano in questo modo un messaggio che non è stato possibile inviare perché il client non è connesso, e WriteData e WriteAndWaitData anche quando l'handshake WebSocket non è ancora terminato. 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 per disattivare la segnalazione dei messaggi che non è stato possibile inviare.

Esempio


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;

Torna agli Eventi