HTTP/2-Protokoll
Nativer HTTP/2-Client und -Server für Delphi und C++Builder. Binäres Framing, Stream-Multiplexing, HPACK-Header-Komprimierung und ALPN-Aushandlung — ohne Abhängigkeit von IIS, Apache oder Indy.
Nativer HTTP/2-Client und -Server für Delphi und C++Builder. Binäres Framing, Stream-Multiplexing, HPACK-Header-Komprimierung und ALPN-Aushandlung — ohne Abhängigkeit von IIS, Apache oder Indy.
Zwei produktionsreife Komponenten implementieren das vollständige HTTP/2-Wire-Protokoll (RFC 9113). Nutzen Sie den Client, um HTTP/2-APIs zu konsumieren, oder den Server, um sie zu veröffentlichen — oder beides in derselben Anwendung.
Nativer HTTP/2-Client — gemultiplexte GET/POST/PUT/DELETE-Anfragen über eine einzige TLS-Verbindung, HPACK-komprimierte Header, ALPN-h2-Upgrade oder Prior-Knowledge-h2c, Verarbeitung von Server-Push sowie Bearer-, Basic- und NTLM-Authentifizierung.
Nativer HTTP/2-Server — derselbe WebSocket-HTTP-Server bedient HTTP/1.1, HTTP/2 (h2) und WebSocket auf einem einzigen TLS-Port. ALPN-Aushandlung, Stream-Multiplexing, HPACK-Antworten und optionales WebSocket-über-HTTP/2-Bootstrapping nach RFC 8441.
Eine erstklassige Implementierung des HTTP/2-Framings, integriert in den Client und in den WebSocket-HTTP-Server.
TsgcHTTP2ClientTsgcWebSocketHTTPServer
Windows, macOS, Linux, iOS, Android
Client: Standard / Pro / Enterprise
Server: Pro / Enterprise
Alle Vorteile von HTTP/2 gegenüber HTTP/1.1 — in nativem Delphi/C++Builder-Code, ohne einen separaten Webserver starten zu müssen.
Anfragen und Antworten werden in binäre Frames aufgeteilt, die von einem deterministischen Zustandsautomaten geparst werden. Kein zeilenbasiertes Textparsing und keine HTTP/1.1-Mehrdeutigkeit mehr.
Dutzende laufender Anfragen teilen sich eine einzige TCP/TLS-Verbindung — kein Head-of-Line-Blocking auf der HTTP-Ebene und keine zusätzlichen Sockets pro Anfrage.
Eingebauter HPACK-Encoder/-Decoder (RFC 7541). Wiederholte Cookies, Auth-Tokens und Content-Type-Header kosten nach der ersten Anfrage nahezu null Bytes.
Während des TLS-Handshakes kündigt die Gegenstelle h2 und http/1.1 an; der ausgehandelte ALPN-Wert wählt das Protokoll ohne verschwendete Round-Trips.
Für vertrauenswürdige interne Verbindungen und Service-Mesh-Sidecars können beide Seiten ALPN überspringen und HTTP/2 über Klartext via HTTP2_PriorKnowledge starten.
Der Server kann proaktiv PUSH_PROMISE-Antworten senden; der Client stellt sie über OnHTTP2StreamData zum Caching bereit. Hinweis: Im öffentlichen Web veraltet, intern aber weiterhin nützlich.
Prioritäts- und Abhängigkeitshinweise pro Stream erlauben es kritischen Antworten (Auth, Navigation, JSON-RPC-Ergebnisse), Massenübertragungen auf derselben Verbindung zu überholen.
WINDOW_UPDATE-Flusssteuerung pro Stream und pro Verbindung verhindert, dass eine große Antwort kleinere aushungert — konfigurierbar über SETTINGS-Frames.
Setzen Sie TLSOptions.IOHandler auf iohSChannel für Windows-Kernel-TLS (ohne DLLs) oder auf iohOpenSSL für vollständige plattformübergreifende 1.2/1.3-Unterstützung.
Drop-in-Szenarien, in denen sich die Multiplexing- und HPACK-Einsparungen von HTTP/2 sofort auszahlen.
Apples APNs-Provider-API erfordert HTTP/2. TsgcHTTP2Client steuert die Komponente Apple Push Ende-zu-Ende mit Token-basierter Authentifizierung.
Googles FCM-HTTP-v1-API läuft über HTTP/2. Dieselbe Komponente bedient FCM mit Service-Account-JWT-Erzeugung.
Die meisten Cloud-APIs (Stripe, GitHub, Cloudflare, Google, Azure…) sprechen standardmäßig HTTP/2 — gemultiplexte Clients reduzieren die Latenz bei parallelen Aufrufen.
Interne Microservices hinter einem Sidecar-Mesh nutzen HTTP/2 mit Prior-Knowledge (h2c), um Hunderte von RPC-Streams über einen Socket zu multiplexen.
TsgcWebSocketHTTPServer bedient HTTP/1.1, HTTP/2 und WebSocket auf einem einzigen TLS-Endpunkt — ALPN leitet jede Verbindung automatisch weiter.
Für Clients, die WebSocket-Frames lieber in HTTP/2-Streams tunneln, aktivieren Sie Specifications.RFC8441 auf dem Server.
Komponente platzieren, TLS setzen, los geht's. ALPN handelt h2 während des Handshakes für Sie aus.
uses
sgcHTTP, sgcHTTP2;
var
HTTP2: TsgcHTTP2Client;
begin
HTTP2 := TsgcHTTP2Client.Create(nil);
HTTP2.TLSOptions.IOHandler := iohSChannel; // oder iohOpenSSL
HTTP2.TLSOptions.Version := tls1_2;
// Benutzerdefinierte Header hinzufügen (durch HPACK komprimiert)
HTTP2.Request.CustomHeaders.Add('authorization: Bearer eyJ...');
// GET über HTTP/2 (ALPN handelt h2 aus)
Memo1.Text := HTTP2.Get('https://api.example.com/v1/items');
ShowMessage(IntToStr(HTTP2.Response.Status));
end;
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';
// HTTP/1.1, HTTP/2 und WebSocket auf demselben TLS-Port
Server.Specifications.HTTP := True;
Server.Specifications.HTTP2 := True;
Server.Specifications.RFC6455 := True;
Server.Active := True;
end;
// uses: sgcHTTP, sgcHTTP2
TsgcHTTP2Client *HTTP2 = new TsgcHTTP2Client(this);
HTTP2->TLSOptions->IOHandler = iohSChannel;
HTTP2->Request->CustomHeaders->Add("authorization: Bearer eyJ...");
Memo1->Text = HTTP2->Get("https://api.example.com/v1/items");
Direkte Links zu den Komponentenseiten, zur Online-Hilfe und zum lauffähigen Demoprojekt, das in der Testversion enthalten ist.
| HTTP/2-Client — TsgcHTTP2Client Komponentenseite: Funktionen, Codebeispiele und TLS-Optionen für den Client. | Öffnen | |
| HTTP/2-Server — TsgcWebSocketHTTPServer Komponentenseite: Wie Sie HTTP/2 neben HTTP/1.1 und WebSocket auf einem TLS-Port aktivieren. | Öffnen | |
| Online-Hilfe — HTTP/2 Vollständige Referenz zu Eigenschaften, Methoden und Ereignissen der HTTP/2-Komponenten. | Öffnen | |
| Demoprojekt — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client Lauffähiges Beispielprojekt. Im sgcWebSockets-Paket enthalten — laden Sie unten die Testversion herunter. | Öffnen | |
| Benutzerhandbuch (PDF) Umfassendes Handbuch zu jeder Komponente der Bibliothek. | Öffnen |