TsgcHTTP3Server › 메서드 › SendPush

SendPush 메서드

HTTP/3 서버 푸시(PUSH_PROMISE 및 푸시된 응답)를 보냅니다.

구문

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

Parameters

NameType설명
aQUICConnconst TsgcQUICServerConnection푸시가 전송되는 QUIC 연결.
aPushIdInt64이 서버 푸시를 식별하는 Push ID와 응답을 전달하는 단방향 푸시 스트림입니다.
aRequestconst TsgcHTTP3Request푸시가 응답하는 합성 요청. 그 Method, Scheme, Host(authority) 및 Path는 PUSH_PROMISE 프레임의 요청 pseudo-header로 인코딩됩니다.
aResponseconst TsgcHTTP3Response푸시 스트림으로 전달되는 응답입니다. 호출 전에 StatusCode, ContentType, 선택적 Headers 및 Data 본문을 설정하십시오.

설명

SendPush는 먼저 요청 pseudo-header를 담은 PUSH_PROMISE 프레임을 요청 스트림에 쓴 후, Push ID가 접두사로 붙은 단방향 푸시 스트림(스트림 유형 0x01)을 열고 SendResponse를 통해 응답을 전송합니다. 서버 푸시를 통해 서버는 클라이언트가 아직 요청하지 않은 리소스를 능동적으로 전달할 수 있습니다.

클라이언트는 0이 아닌 MAX_PUSH_ID를 알려서 푸시를 허용해야 합니다. 허용하지 않았거나 Push 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;

메서드로 돌아가기