Soms zijn er fouten in communicaties: de server kan een verbinding verbreken omdat deze niet is geautoriseerd of een bericht heeft niet het juiste formaat. Er zijn 2 gebeurtenissen waarbij fouten worden vastgelegd.
Dit evenement wordt geactiveerd elke keer dat er een fout is in het WebSocket-protocol, zoals ongeldig berichttype, ongeldige UTF-8-tekenreeks...
OnError wordt ook geactiveerd met Connection = nil wanneer WriteData, WriteAndWaitData of Ping een bericht niet kunnen verzenden omdat de client niet is verbonden, of, voor WriteData en WriteAndWaitData, omdat de WebSocket-handshake nog niet is voltooid. De parameter Error is dan Data not sent, the client is not connected or its handshake has not completed. Er wordt geen uitzondering naar de aanroeper gegenereerd en de verbinding wordt niet verbroken, dus controleer Connection altijd op nil voordat u deze in deze gebeurtenis gebruikt.
procedure OnError(Connection: TsgcWSConnection; const Error: string);
begin
WriteLn('#error: ' + Error);
end;
Deze gebeurtenis wordt geactiveerd elke keer dat er een uitzondering optreedt, zoals schrijven naar een socket die niet actief is of toegang tot een object dat niet bestaat.
procedure OnException(Connection: TsgcWSConnection; E: Exception);
begin
WriteLn('#exception: ' + E.Message);
end;
Standaard wordt er, wanneer een verbinding wordt gesloten door de server, een uitzondering gegenereerd. Als u deze uitzonderingen niet wilt laten genereren, schakel dan Options.RaiseDisconnectExceptions uit.
Options.RaiseDisconnectExceptions bepaalt ook of OnError berichten meldt die niet konden worden verzonden omdat de client niet is verbonden. Stel deze in op False om deze berichten stilzwijgend te laten vallen, zoals in eerdere versies.