TsgcHTTP3Client › Ereignisse › OnPushPromise
Wird ausgelöst, wenn der Server zusagt, eine Ressource zu pushen, bevor die gepushte Antwort eintrifft.
TsgcHTTP3PushPromiseEvent = procedure(Sender: TObject; aPushId: Int64;
const aHeaders: TStringList) of object;
property OnPushPromise: TsgcHTTP3PushPromiseEvent read FOnPushPromise
write FOnPushPromise;
| Name | Typ | Beschreibung |
|---|---|---|
Sender | TObject | Die TsgcHTTP3Client-Instanz, die das Ereignis ausgelöst hat. |
aPushId | Int64 | Bezeichner des versprochenen Push. Übergeben Sie ihn an CancelPush, um den Push abzulehnen. |
aHeaders | const TStringList | Header der Anfrage, die der Server in Ihrem Namen beantwortet, einschließlich der Pseudo-Header :method und :path. Die Liste ist nur innerhalb des Handlers gültig. |
Ein PUSH_PROMISE-Frame (RFC 9114 Abschnitt 7.2.5) teilt dem Client mit, dass der Server eine Ressource senden möchte, die nicht angefordert wurde, weil er erwartet, dass der Client sie benötigen wird. Das Versprechen enthält die Anfrage-Header, die der Push beantworten wird, sodass der Client entscheiden kann, ob er die Ressource möchte, bevor die Bytes aufgewendet werden.
Dieses Ereignis ist genau dieser Entscheidungspunkt. Wenn die Ressource bereits zwischengespeichert oder schlicht unerwünscht ist, rufen Sie CancelPush mit aPushId aus dem Handler auf. Andernfalls tun Sie nichts und die gepushte Antwort wird später über OnPush geliefert und trägt dieselbe Push-ID.
Server Push ist deaktiviert, bis der Client das Limit mit SetMaxPushId anhebt, daher wird dieses Ereignis nie ausgelöst, sofern dieser Aufruf nicht erfolgt ist.
procedure TfrmMain.OnPushPromiseEvent(Sender: TObject; aPushId: Int64;
const aHeaders: TStringList);
begin
if aHeaders.Values[':path'] = '/already-cached.css' then
oClient.CancelPush(aPushId);
end;