TsgcHTTP3Client › Ereignisse › OnAltSvc
Wird ausgelöst, wenn der Server alternative Dienste über den alt-svc-Header ankündigt.
TsgcAltSvcEvent = procedure(Sender: TObject;
const aEntries: TsgcAltSvcList) of object;
property OnAltSvc: TsgcAltSvcEvent read FOnAltSvc write FOnAltSvc;
| Name | Typ | Beschreibung |
|---|---|---|
Sender | TObject | Die TsgcHTTP3Client-Instanz, die das Ereignis ausgelöst hat. |
aEntries | const TsgcAltSvcList | Array von TsgcAltSvcEntry-Records, die aus dem Header geparst wurden. Jeder besitzt Protocol (das ALPN-Token, zum Beispiel h3), Host, Port, MaxAge (Sekunden, die der Eintrag gültig bleibt) und Persist. |
Der alt-svc-Header (RFC 7838) ist die Art, wie ein Server mitteilt, dass dieselbe Ressource auch anderswo erreichbar ist, typischerweise auf einem anderen Port oder über ein neueres Protokoll. Dieses Ereignis wird ausgelöst, sobald eine Antwort einen solchen Header enthält, wobei der Header bereits in Records geparst ist.
Verwenden Sie es, um herauszufinden, wo ein Dienst bevorzugt erreicht werden möchte, und um diesen Hinweis für MaxAge Sekunden zwischenzuspeichern. Ihn anzuwenden bedeutet, sich bei der nächsten Verbindung mit dem angekündigten Host und Port zu verbinden.
Das Ereignis wird nicht für einen Header ausgelöst, der lediglich zuvor angekündigte Alternativen löscht, und es wird nicht ausgelöst, wenn kein Eintrag geparst werden konnte. Der Client reagiert nicht von sich aus auf die Ankündigung: Der Wechsel des Endpunkts ist die Entscheidung der Anwendung.
procedure TfrmMain.OnAltSvcEvent(Sender: TObject; const aEntries: TsgcAltSvcList);
var
i: Integer;
begin
for i := 0 to Length(aEntries) - 1 do
Log(Format('%s on %s:%d (max-age %d)', [aEntries[i].Protocol,
aEntries[i].Host, aEntries[i].Port, aEntries[i].MaxAge]));
end;