TsgcWebSocketClient › Gebeurtenissen › OnError
Wordt geactiveerd telkens wanneer een WebSocket-protocolfout optreedt op de verbinding.
property OnError: TsgcWSErrorEvent;
// TsgcWSErrorEvent = procedure(Connection: TsgcWSConnection; const Error: string) of object
—
OnError rapporteert protocolniveaufouten gedetecteerd door de WebSocket-laag, zoals een ongeldig berichttype, een misvormd frame of een ongeldige UTF-8-payload wanneer Options.ValidateUTF8 is ingeschakeld. De parameter Error bevat een tekstuele beschrijving van de fout; de parameter Connection identificeert de getroffen sessie. Gebruik voor onverwerkte uitzonderingen (socketfouten, toegangsschendingen...) OnException. Wanneer Connection is toegewezen, sluit het component die verbinding zodra OnError is geactiveerd, ongeacht de opties: de handler is dan normaal al teruggekeerd, maar met NotifyEvents ingesteld op neAsynchronous wordt een fout die op een secundaire thread wordt gegenereerd, in de wachtrij geplaatst voor de hoofdthread en kan de handler ervan pas worden uitgevoerd nadat de verbinding is gesloten. Wanneer Connection nil is, wordt er niets gesloten.
OnError kan worden geactiveerd met Connection = nil, dus een handler moet Connection controleren voordat deze wordt gebruikt. WriteData, WriteAndWaitData en Ping melden op deze manier een bericht dat niet kon worden verzonden omdat de client niet is verbonden, en WriteData en WriteAndWaitData ook wanneer 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. (resourcestring S_ERROR_CLIENT_NOT_CONNECTED), en de gebeurtenis wordt geactiveerd op de thread die de methode heeft aangeroepen, voordat de methode terugkeert. Een schrijfbewerking die mislukt nadat de client opnieuw is verbonden, wordt ook gemeld met Connection = nil, zodat de nieuwe verbinding niet wordt gesloten. Stel Options.RaiseDisconnectExceptions in op False om de melding van berichten die niet konden worden verzonden uit te schakelen.
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;