TsgcHTTP3Client › Ereignisse › OnPush

OnPush Ereignis

Wird ausgelöst, wenn eine vollständige gepushte Antwort vom Server empfangen wurde.

Syntax

TsgcHTTP3PushEvent = procedure(Sender: TObject; aPushId: Int64;

  const aResponse: TsgcHTTP3Response) of object;



property OnPush: TsgcHTTP3PushEvent read FOnPush write FOnPush;

Parameter

NameTypBeschreibung
SenderTObjectDie TsgcHTTP3Client-Instanz, die das Ereignis ausgelöst hat.
aPushIdInt64Bezeichner des Push, der mit dem zuvor über OnPushPromise gemeldeten übereinstimmt.
aResponseconst TsgcHTTP3ResponseDie gepushte Antwort mit ihrem Status, ihren Headern und ihrem Body. Rufen Sie GetDataAsString auf, um den Body als Text zu dekodieren. Nur innerhalb des Handlers gültig.

Hinweise

OnPush liefert eine Ressource, die der Server ungefragt gesendet hat, sobald ihr Push-Stream vollständig ist. Jeder Push trifft auf seinem eigenen unidirektionalen Stream ein, der die Push-ID gefolgt von den Antwort-Headern und dem Body trägt (RFC 9114 Abschnitt 4.6), und der Client setzt sie zu einem normalen Antwortobjekt zusammen.

Die Reihenfolge für jeden Push ist zuerst OnPushPromise, das die Anfrage-Header trägt, die der Push beantworten wird, und dann dieses Ereignis mit der Antwort selbst. Ordnen Sie beide über aPushId einander zu. Ein mit CancelPush abgelehnter Push erreicht dieses Ereignis nie.

Server Push ist standardmäßig deaktiviert. Das Ereignis wird erst ausgelöst, nachdem der Client das Limit mit SetMaxPushId angehoben hat, und nur für Push-IDs innerhalb dieses Limits.

Die typische Verwendung besteht darin, die per Push übertragene Ressource in einem Anwendungscache abzulegen, sodass eine spätere Anfrage für denselben Pfad lokal bedient wird. Das Antwortobjekt gehört dem Client, kopieren Sie daher alles, was Sie behalten möchten.

Dieses Mitglied ist derzeit nur in der Delphi/C++Builder-Implementierung verfügbar.

Beispiel



oClient.OnPushPromise := OnPushPromiseEvent;

oClient.OnPush := OnPushEvent;

oClient.SetMaxPushId(9);



procedure TfrmMain.OnPushEvent(Sender: TObject; aPushId: Int64;

  const aResponse: TsgcHTTP3Response);

begin

  Log(Format('push %d: HTTP %d, %d bytes',

    [aPushId, aResponse.StatusCode, Length(aResponse.Data)]));

end;

Zurück zu Ereignissen