HTTP/2-Server (TsgcWebSocketHTTPServer) — sgcWebSockets | eSeGeCe

HTTP/2 Server

Stelle HTTP/2 (h2) zusammen mit HTTP/1.1 und WebSocket auf einem einzigen TLS-Port über TsgcWebSocketHTTPServer bereit. ALPN-Aushandlung, HPACK und Stream-Multiplexing sind integriert.

TsgcWebSocketHTTPServer

Derselbe TsgcWebSocketHTTPServer, der für WebSocket und HTTP/1.1 genutzt wird, stellt auch HTTP/2 über TLS bereit — aktiviere Specifications.HTTP2, ALPN erledigt den Rest.

Komponentenklasse

TsgcWebSocketHTTPServer

Protokoll

HTTP/2 (RFC 9113)

Plattformen

Windows, macOS, Linux, iOS, Android

Edition

Professional / Enterprise

HTTP/2 mit einer Eigenschaft aktivieren

Aktiviere an einer TsgcWebSocketHTTPServer-Instanz TLS und schalte Specifications.HTTP2 ein — die ALPN-h2-Aushandlung übernimmt das 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';

  // Allow HTTP/1.1, HTTP/2 and WebSocket on the same port
  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;

Was steckt drin

TsgcWebSocketHTTPServer mit aktiviertem HTTP/2 — teile einen TLS-Endpunkt zwischen HTTP/1.1, HTTP/2 und WebSocket.

ALPN-Aushandlung

Während des TLS-Handshakes bietet der Server sowohl http/1.1 als auch h2 an. Der Client wählt das Protokoll; der Server leitet entsprechend weiter — kein separater Listening-Socket nötig.

WebSocket-Koexistenz

WebSocket-Clients führen das Upgrade weiterhin über den HTTP/1.1-Pfad durch. RFC 8441 (Bootstrapping WebSockets with HTTP/2) wird über Specifications.RFC8441 unterstützt.

HPACK + Stream-Framing

Integrierter HPACK-Encoder für Antwort-Header und ein Stream-Multiplexing-Kern, der jede Anfrage über ihre eigene Stream-ID weiterleitet, wobei Prioritätshinweise berücksichtigt werden.

Server Push

Server Push (PUSH_PROMISE) wird unterstützt, ist jedoch inzwischen veraltet — moderne Clients ignorieren ihn; ziehe stattdessen 103 Early Hints oder HTTP/3 für Hinweise in Betracht.

TLS-Auswahl

Setze SSLOptions.IOHandler auf iohOpenSSL (plattformübergreifend) oder iohSChannel (Windows). HTTP/2 erfordert TLS 1.2+ gemäß der Bereitstellung von RFC 7540 / 9113.

Verbindungsmetriken

Jede HTTP/2-Verbindung stellt die Stream-Anzahl, RTT-Schätzungen, die gesamten Ein-/Ausgabe-Bytes und die ausgehandelten SETTINGS-Frame-Parameter über OnHTTP2Settings bereit.

Spezifikationen und Referenzen

Maßgebliche Quellen für das Protokoll, das diese Komponente implementiert.

Dokumentation & Demos

Springe direkt zur Komponentenreferenz, lade das einsatzbereite Demo-Projekt herunter und teste die Testversion.

Online-Hilfe — TsgcWebSocketHTTPServer Vollständige Eigenschaften-, Methoden- und Ereignisreferenz für diese Komponente.
Demo-Projekt — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client Einsatzbereites Beispielprojekt. Im sgcWebSockets-Paket enthalten — lade unten die Testversion herunter.
Technisches Dokument (PDF) Funktionen, Schnellstart, Codebeispiele für Delphi & C++ Builder und Primärquellenreferenzen — nur für diese Komponente.
Benutzerhandbuch (PDF) Umfassendes Handbuch zu jeder Komponente der Bibliothek.

Bereit, HTTP/2 aus Delphi bereitzustellen?

Lade die kostenlose Testversion herunter und stelle HTTP/1.1, HTTP/2 und WebSocket über einen einzigen TLS-Endpunkt bereit.