TsgcWebSocketClient › Ereignisse › OnError

OnError Ereignis

Wird jedes Mal ausgelöst, wenn ein WebSocket-Protokollfehler auf der Verbindung auftritt.

Syntax

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

Standardwert

—

Hinweise

OnError meldet Probleme auf Protokollebene, die von der WebSocket-Schicht erkannt wurden, wie etwa einen ungültigen Nachrichtentyp, einen fehlerhaften Frame oder eine ungültige UTF-8-Nutzlast, wenn Options.ValidateUTF8 aktiviert ist. Der Parameter Error enthält eine textuelle Beschreibung des Fehlers; der Parameter Connection identifiziert die betroffene Sitzung. Verwenden Sie für unbehandelte Ausnahmen (Socket-Fehler, Zugriffsverletzungen ...) stattdessen OnException. Wenn Connection zugewiesen ist, schließt die Komponente diese Verbindung, nachdem OnError ausgelöst wurde, unabhängig von den Optionen: Der Handler ist zu diesem Zeitpunkt normalerweise bereits zurückgekehrt, aber mit NotifyEvents auf neAsynchronous wird ein auf einem sekundären Thread ausgelöster Fehler in den Hauptthread eingereiht, und sein Handler kann ausgeführt werden, nachdem die Verbindung bereits geschlossen wurde. Wenn Connection nil ist, wird nichts geschlossen.

OnError kann mit Connection = nil ausgelöst werden, daher muss ein Handler Connection prüfen, bevor er sie verwendet. WriteData, WriteAndWaitData und Ping melden auf diese Weise eine Nachricht, die nicht gesendet werden konnte, weil der Client nicht verbunden ist, und WriteData sowie WriteAndWaitData auch, wenn der WebSocket-Handshake noch nicht abgeschlossen ist. Der Parameter Error lautet dann Data not sent, the client is not connected or its handshake has not completed. (resourcestring S_ERROR_CLIENT_NOT_CONNECTED), und das Ereignis wird auf dem Thread ausgelöst, der die Methode aufgerufen hat, bevor die Methode zurückkehrt. Ein Schreibvorgang, der fehlschlägt, nachdem der Client erneut verbunden wurde, wird ebenfalls mit Connection = nil gemeldet, sodass die neue Verbindung nicht geschlossen wird. Setzen Sie Options.RaiseDisconnectExceptions auf False, um die Meldung von Nachrichten zu deaktivieren, die nicht gesendet werden konnten.

Beispiel


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;

Zurück zu Ereignissen