TsgcWebSocketHTTPServer › Propriedades › HTTP3Options
Habilita o listener HTTP/3 (QUIC) que serve requisições HTTP juntamente com HTTP/1.1 e HTTP/2, por UDP.
property HTTP3Options: TsgcWSHTTP3Server_Options read FHTTP3Options write SetHTTP3Options;
Enabled=False, Port=0, AltSvc.Enabled=True
Por padrão, o servidor não escuta por HTTP/3. Defina HTTP3Options.Enabled como True para abrir um listener QUIC ao lado do listener TCP/TLS existente; isso requer o certificado e a chave já configurados em SSLOptions (CertFile/KeyFile — uma chave privada criptografada não é suportada para este listener) e OpenSSL 3.5 ou posterior. Port define a porta UDP à qual o listener se vincula; deixe-a em 0 para reutilizar a porta já definida em SSLOptions.Port. Requisições recebidas via HTTP/3 são despachadas pelo mesmo DocumentRoot de fornecimento de arquivos estáticos e pelos mesmos eventos OnCommandGet e OnCommandOther usados para HTTP/1.1 e HTTP/2, de modo que o código de tratamento de requisições existente praticamente já funciona; há duas diferenças a considerar no código: ARequestInfo.Version reporta 'HTTP/3' para essas requisições, e o parâmetro AContext passado ao handler é nil (não há conexão TCP por trás de uma requisição HTTP/3), portanto qualquer código que o desreferencie deve se proteger contra esse caso. AltSvc.Enabled (ativado por padrão) faz com que as respostas HTTPS carreguem um cabeçalho Alt-Svc anunciando o endpoint HTTP/3 assim que o listener estiver em execução, para que navegadores e clientes possam descobri-lo e migrar por conta própria; ele se combina com o anúncio Alt-Svc do HTTP/2 em um único cabeçalho quando ambos estão habilitados. Authentication.Basic é aplicada às requisições HTTP/3; sessões, autenticação OAuth2 e JWT e o encaminhamento de requisições não são aplicados a elas nesta versão. Se o listener HTTP/3 falhar ao iniciar — porta em uso, certificado ausente ou inválido, OpenSSL 3.5 não disponível — o servidor HTTP/1.1 e HTTP/2 normal continua em execução sem ser afetado, e a falha é reportada por meio de OnException. Compilar com suporte a HTTP/3 requer que a diretiva de compilador do pacote HTTP3 esteja habilitada.
oServer := TsgcWebSocketHTTPServer.Create(nil);
oServer.SSL := true;
oServer.SSLOptions.CertFile := 'c:\certificates\mycert.pem';
oServer.SSLOptions.KeyFile := 'c:\certificates\mycert.pem';
oServer.HTTP3Options.Enabled := true;
oServer.Active := true;