TsgcQUICServer › Ereignisse › OnQUICDisconnect
Wird ausgelöst, wenn eine QUIC-Verbindung geschlossen wurde, und meldet den Fehlercode und den Grund.
property OnQUICDisconnect: TsgcQUICServerDisconnectEvent;
// TsgcQUICServerDisconnectEvent = procedure(Sender: TObject; const aConnection: TsgcQUICServerConnection; aCode: Int64; const aReason: string) of object
—
| Name | Typ | Beschreibung |
|---|---|---|
Sender | TObject | Die TsgcQUICServer-Instanz. |
aConnection | const TsgcQUICServerConnection | Die Verbindung, die geschlossen wird. Sie ist innerhalb des Handlers noch lesbar, wird aber unmittelbar danach freigegeben. Siehe TsgcQUICServerConnection. |
aCode | Int64 | 0 bei einem normalen Schließen. Bei einem Fehler enthält es den von SSL_get_error zurückgegebenen OpenSSL-Fehlercode, nicht einen QUIC-Anwendungsfehlercode. |
aReason | const string | Eine leere Zeichenfolge bei einem normalen Schließen, andernfalls das feste Literal 'SSL error'. Es handelt sich nicht um eine vom Peer gelieferte Begründung. |
OnQUICDisconnect wird ausgelöst, wenn der Server eine Verbindung nicht mehr bedient, und zwar in einem von zwei Fällen:
aCode ist 0 und aReason ist leer. Beachten Sie, dass dieser Fall im Multi-Stream-Modus (siehe AlwaysMultiStream) das Ereignis nicht auslöst: Das Beenden eines Anfrage-Streams beendet dort nicht die Verbindung, daher wird nur der Stream freigegeben und die Verbindung bleibt bestehen.aCode ist der OpenSSL-Fehlercode und aReason ist 'SSL error'.Das Ereignis wird nicht für Verbindungen ausgelöst, die durch Stop beendet werden, was die gesamte Verbindungsliste auf einmal leert. Verlassen Sie sich daher nicht darauf, um beim Herunterfahren eine Bereinigung pro Sitzung durchzuführen, erledigen Sie das stattdessen rund um Ihren Stop-Aufruf.
Nachdem der Handler zurückgekehrt ist, wird die Verbindung vom Server entfernt und freigegeben. Geben Sie hier jeden sitzungsbezogenen Kontext frei und verwerfen Sie jede Referenz auf aConnection, eine spätere Verwendung liest freigegebenen Speicher.
Die Delphi-Parameter aCode und aReason transportieren OpenSSL-Diagnosen statt Informationen auf QUIC-Ebene. In .NET tragen dieselben Parameter den QUIC-Anwendungsfehlercode und die Ausnahmemeldung, und .NET löst das Ereignis aus, wenn eine Verbindung durch Stop geschlossen wird.
Dieses Ereignis läuft im Hintergrund-Listener-Thread des Servers, marshallen Sie daher zum Haupt-Thread, bevor Sie die UI ansprechen.
procedure OnQUICDisconnectEvent(Sender: TObject; const aConnection: TsgcQUICServerConnection; aCode: Int64; const aReason: string);
begin
Log('QUIC disconnected: ' + aReason);
end;