HTTP/2-server

Bedien HTTP/2 (h2) naast HTTP/1.1 en WebSocket op één TLS-poort via TsgcWebSocketHTTPServer. ALPN-onderhandeling, HPACK en stream-multiplexing zijn ingebouwd.

TsgcWebSocketHTTPServer

Dezelfde TsgcWebSocketHTTPServer die voor WebSocket en HTTP/1.1 wordt gebruikt, bedient ook HTTP/2 over TLS — zet Specifications.HTTP2 aan, ALPN doet de rest.

Componentklasse

TsgcWebSocketHTTPServer

Platforms

Windows, macOS, Linux, iOS, Android

Editie

Professional / Enterprise

Schakel HTTP/2 in met één property

Schakel op een TsgcWebSocketHTTPServer-instantie TLS in en zet Specifications.HTTP2 aan — de ALPN-h2-onderhandeling regelt de upgrade automatisch.

uses
  sgcWebSocket;

var
  Server: TsgcWebSocketHTTPServer;
begin
  Server := TsgcWebSocketHTTPServer.Create(nil);
  Server.Port := 443;
  Server.SSL  := True;
  Server.SSLOptions.CertFile := 'cert.pem';
  Server.SSLOptions.KeyFile  := 'key.pem';

  // Sta HTTP/1.1, HTTP/2 en WebSocket toe op dezelfde poort
  Server.Specifications.HTTP   := True;
  Server.Specifications.HTTP2  := True;
  Server.Specifications.RFC6455 := True;

  Server.OnCommandGet := procedure(AContext: TIdContext;
    ARequestInfo: TIdHTTPRequestInfo; AResponseInfo: TIdHTTPResponseInfo)
  begin
    AResponseInfo.ContentText := 'Hello over HTTP/' + IfThen(ARequestInfo.HTTP2, '2', '1.1');
  end;

  Server.Active := True;
end;
// uses: sgcWebSocket
TsgcWebSocketHTTPServer *Server = new TsgcWebSocketHTTPServer(this);
Server->Port = 443;
Server->SSL  = true;
Server->Specifications->HTTP2 = true;
Server->Active = true;

Wat zit erin

TsgcWebSocketHTTPServer met HTTP/2 ingeschakeld — deel één TLS-endpoint tussen HTTP/1.1, HTTP/2 en WebSocket.

ALPN-onderhandeling

Tijdens de TLS-handshake adverteert de server zowel http/1.1 als h2. De client kiest het protocol; de server dispatcht het bijhorende verzoek — geen aparte luistersocket nodig.

Co-existentie met WebSocket

WebSocket-clients upgraden nog steeds via het HTTP/1.1-pad. RFC 8441 (Bootstrapping WebSockets with HTTP/2) wordt ondersteund via Specifications.RFC8441.

HPACK + stream-framing

Ingebouwde HPACK-encoder voor response-headers en een stream-multiplexing-kern die elk verzoek dispatcht op zijn eigen stream-id, met respect voor priority hints.

Server push

Server push (PUSH_PROMISE) wordt ondersteund maar is inmiddels deprecated — moderne clients negeren het; overweeg in plaats daarvan 103 Early Hints of HTTP/3 voor hints.

TLS-keuze

Stel SSLOptions.IOHandler in op iohOpenSSL (cross-platform) of iohSChannel (Windows). HTTP/2 vereist TLS 1.2+ volgens de RFC 7540-/9113-deployment.

Connectiestatistieken

Elke HTTP/2-verbinding maakt het aantal streams, RTT-schattingen, totaal aantal in-/uitgaande bytes en de onderhandelde SETTINGS-frame-parameters beschikbaar via OnHTTP2Settings.

Specificaties & referenties

Gezaghebbende bronnen voor het protocol dat dit component implementeert.

Documentatie & demo's

Deep-link naar de componentreferentie, pak het direct uitvoerbare demoproject en download de proefversie.

Online help — TsgcWebSocketHTTPServer Volledige property-, methode- en event-referentie voor dit component.
Demoproject — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client Direct uitvoerbaar voorbeeldproject. Zit in het sgcWebSockets-package — download de proefversie hieronder.
Technisch document (PDF) Functies, snelstart, codevoorbeelden voor Delphi & C++ Builder en primaire bronreferenties — alleen dit component.
Gebruikershandleiding (PDF) Uitgebreide handleiding die elk component in de bibliotheek behandelt.

Klaar om HTTP/2 vanuit Delphi te bedienen?

Download de gratis proefversie en bied HTTP/1.1, HTTP/2 en WebSocket aan vanaf één TLS-endpoint.