TsgcHTTP3Server › 方法 › SendPush

SendPush 方法

发送 HTTP/3 服务器推送(PUSH_PROMISE 及推送响应)。

语法

procedure SendPush(const aQUICConn: TsgcQUICServerConnection; aPushId: Int64; const aRequest: TsgcHTTP3Request; const aResponse: TsgcHTTP3Response);

参数

名称类型描述
aQUICConnconst TsgcQUICServerConnection推送发送所在的 QUIC 连接。
aPushIdInt64标识此服务器推送及承载响应的单向推送流的推送 ID。
aRequestconst TsgcHTTP3Request推送所答复的合成请求。其 Method、Scheme、Host(authority)和 Path 被编码为 PUSH_PROMISE 帧的请求伪标头。
aResponseconst TsgcHTTP3Response在推送流上传递的响应。调用前请设置 StatusCode、ContentType、可选的 Headers 以及 Data 正文。

备注

SendPush 首先在请求流上写入 PUSH_PROMISE 帧(携带请求伪标头),然后打开单向推送流(流类型 0x01,以推送 ID 为前缀),并通过 SendResponse 在该流上发送响应。服务器推送允许服务器主动将客户端尚未请求的资源推送给客户端。

客户端必须已通过通告非零的 MAX_PUSH_ID 来允许推送;若未允许,或推送 ID 超过该限制,客户端将丢弃推送。请注意,HTTP/3 服务器推送在大多数浏览器中已被弃用,因此仅在您控制的客户端上使用。

示例


oRequest := TsgcHTTP3Request.Create;
oResponse := TsgcHTTP3Response.Create;
try
  oRequest.Scheme := 'https';
  oRequest.Host := 'example.com';
  oRequest.Path := '/style.css';
  oResponse.StatusCode := 200;
  oResponse.ContentType := 'text/css';
  oResponse.Data := TEncoding.UTF8.GetBytes('body { margin: 0; }');
  oServer.SendPush(aConnection, 0, oRequest, oResponse);
finally
  oResponse.Free;
  oRequest.Free;
end;

返回方法