TsgcWebSocketClient | Eccezioni del Client

A volte si verificano errori nelle comunicazioni: il server può disconnettere una connessione perché non è autorizzata o un messaggio non ha il formato corretto. Ci sono 2 eventi in cui gli errori vengono acquisiti.

OnError

Questo evento viene generato ogni volta che si verifica un errore nel protocollo WebSocket, come tipo di messaggio non valido, stringa utf8 non valida...

OnError viene generato anche con Connection = nil quando WriteData, WriteAndWaitData o Ping non riescono a inviare un messaggio perché il client non è connesso, oppure, per WriteData e WriteAndWaitData, perché 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. Nessuna eccezione viene sollevata verso il chiamante e il client non viene disconnesso, quindi verificare sempre se Connection è nil prima di utilizzarlo in questo evento.


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

 

OnException

Questo evento viene generato ogni volta che si verifica un'eccezione, ad esempio durante la scrittura su un socket non attivo o l'accesso a un oggetto inesistente.

 


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

Per impostazione predefinita, quando una connessione viene chiusa dal server, verrà generata un'eccezione. Se non si desidera che queste eccezioni vengano generate, disabilitare Options.RaiseDisconnectExceptions.

Options.RaiseDisconnectExceptions controlla anche la segnalazione tramite OnError dei messaggi che non è stato possibile inviare perché il client non è connesso. Impostarlo su False per scartare questi messaggi silenziosamente, come facevano le versioni precedenti.