TsgcQUICServer › Ereignisse › OnQUICConnect
Wird ausgelöst, wenn eine neue QUIC-Verbindung angenommen wurde und ihr erster Stream bereit ist.
property OnQUICConnect: TsgcQUICServerConnectEvent;
// TsgcQUICServerConnectEvent = procedure(Sender: TObject; const aConnection: TsgcQUICServerConnection) of object
—
| Name | Typ | Beschreibung |
|---|---|---|
Sender | TObject | Die TsgcQUICServer-Instanz. |
aConnection | const TsgcQUICServerConnection | Die angenommene Verbindung und das Handle, das Sie an WriteData übergeben. Siehe TsgcQUICServerConnection. |
OnQUICConnect wird einmal pro Verbindung ausgelöst, nachdem der QUIC-Handshake abgeschlossen ist und der erste Stream des Peers angenommen wurde. Die Benachrichtigung wird absichtlich verzögert, bis dieser Stream existiert, sodass alle aus dem Handler mit WriteData geschriebenen Bytes einen Ziel-Stream haben. Ein Peer, der sich verbindet, aber nie einen Stream öffnet, wird daher nie angekündigt, obwohl er von ConnectionCount bereits gezählt wird.
Eine Verbindung, die abgelehnt wird, weil QUICOptions.MaxConnections erreicht wurde, wird verworfen, ohne dieses Ereignis auszulösen.
Protokollieren Sie aConnection.PeerIP in Delphi nicht, es ist immer leer, weil OpenSSL keinen Getter für die Peer-Adresse einer Verbindung bereitstellt, die über seine QUIC-Listener-API angenommen wurde. Verwenden Sie die Verbindungsinstanz selbst als Sitzungsschlüssel. In .NET ist der Peer-Endpunkt gefüllt. Siehe TsgcQUICServerConnection für Details.
Dieses Ereignis läuft im Hintergrund-Listener-Thread des Servers, marshallen Sie daher zum Haupt-Thread, bevor Sie die UI ansprechen.
procedure OnQUICConnectEvent(Sender: TObject; const aConnection: TsgcQUICServerConnection);
begin
// PeerIP is not filled in by the Delphi server, so key on the instance
Log(Format('QUIC connected at %s (%d live)',
[DateTimeToStr(aConnection.CreatedAt), oServer.ConnectionCount]));
oServer.WriteData(aConnection, TEncoding.UTF8.GetBytes('welcome'));
end;