Protokół HTTP/2

Natywny klient i serwer HTTP/2 dla Delphi i C++Builder. Binarne ramkowanie, multipleksowanie strumieni, kompresja nagłówków HPACK i negocjacja ALPN — bez zależności od IIS, Apache czy Indy.

Wybierz potrzebną stronę

Dwa gotowe do produkcji komponenty implementują pełny protokół przewodowy HTTP/2 (RFC 9113). Użyj klienta do konsumowania API HTTP/2, użyj serwera do ich publikowania — lub obu w tej samej aplikacji.

TsgcHTTP2Client

Natywny klient HTTP/2 — multipleksowane GET/POST/PUT/DELETE przez jedno połączenie TLS, nagłówki skompresowane przez HPACK, upgrade ALPN h2 lub prior-knowledge h2c, obsługa server push oraz uwierzytelnianie bearer / basic / NTLM.

Otwórz klienta HTTP/2 →

TsgcWebSocketHTTPServer

Natywny serwer HTTP/2 — ten sam serwer HTTP WebSocket obsługuje HTTP/1.1, HTTP/2 (h2) i WebSocket na jednym porcie TLS. Negocjacja ALPN, multipleksowanie strumieni, odpowiedzi HPACK i opcjonalny bootstrap WebSocket-over-HTTP/2 (RFC 8441).

Otwórz serwer HTTP/2 →

HTTP/2 w sgcWebSockets

Pierwszorzędna implementacja ramkowania HTTP/2 zintegrowana zarówno z klientem, jak i z serwerem HTTP WebSocket.

Komponenty

TsgcHTTP2Client
TsgcWebSocketHTTPServer

Platformy

Windows, macOS, Linux, iOS, Android

Edycje

Klient: Standard / Pro / Enterprise
Serwer: Pro / Enterprise

Co daje HTTP/2

Wszystkie zalety HTTP/2 nad HTTP/1.1 — w natywnym kodzie Delphi/C++Builder, bez uruchamiania osobnego serwera WWW.

Binarne ramkowanie

Żądania i odpowiedzi są dzielone na ramki binarne, parsowane przez deterministyczny automat stanów. Koniec z parsowaniem tekstowym i niejednoznacznościami HTTP/1.1.

Multipleksowanie strumieni

Dziesiątki równoczesnych żądań współdzielą jedno połączenie TCP/TLS — bez blokowania head-of-line na warstwie HTTP i bez dodatkowych gniazd na żądanie.

Kompresja nagłówków HPACK

Wbudowany koder/dekoder HPACK (RFC 7541). Powtarzane ciasteczka, tokeny uwierzytelniania i nagłówki content-type zajmują niemal zero bajtów po pierwszym żądaniu.

Negocjacja ALPN

Podczas uzgadniania TLS druga strona ogłasza h2 i http/1.1; wynegocjowana wartość ALPN wybiera protokół bez marnowania round-tripów.

Prior-knowledge h2c

Dla zaufanych połączeń wewnętrznych i sidecarów service-mesh obie strony mogą pominąć ALPN i rozpocząć HTTP/2 w trybie plaintext poprzez HTTP2_PriorKnowledge.

Server push

Serwer może proaktywnie wysyłać odpowiedzi PUSH_PROMISE; klient udostępnia je przez OnHTTP2StreamData do buforowania. Uwaga: przestarzałe w publicznym Web, nadal użyteczne wewnętrznie.

Priorytetyzacja strumieni

Wskazówki dotyczące priorytetu i zależności dla każdego strumienia pozwalają krytycznym odpowiedziom (autoryzacja, nawigacja, wyniki JSON-RPC) wyprzedzać transfery masowe w tym samym połączeniu.

Kontrola przepływu

Kontrola przepływu WINDOW_UPDATE na poziomie strumienia i połączenia zapobiega zagłodzeniu mniejszych odpowiedzi przez jedną dużą — konfigurowalna przez ramki SETTINGS.

TLS przez OpenSSL lub SChannel

Ustaw TLSOptions.IOHandler na iohSChannel, aby skorzystać z TLS w jądrze Windows (bez DLL-i), lub na iohOpenSSL dla pełnej obsługi 1.2/1.3 na wszystkich platformach.

Tam, gdzie HTTP/2 błyszczy

Gotowe scenariusze, w których multipleksowanie i oszczędności HPACK z HTTP/2 zwracają się natychmiast.

Apple Push Notifications

Provider API Apple APNs wymaga HTTP/2. TsgcHTTP2Client obsługuje komponent Apple Push od początku do końca z uwierzytelnianiem opartym na tokenach.

Firebase Cloud Messaging

API FCM HTTP v1 od Google działa przez HTTP/2. Ten sam komponent zasila FCM z generowaniem JWT dla konta usługi.

Nowoczesne API REST i JSON

Większość chmurowych API (Stripe, GitHub, Cloudflare, Google, Azure…) domyślnie używa HTTP/2 — multipleksowani klienci skracają opóźnienia przy wywołaniach równoległych.

Ruch service-to-service

Wewnętrzne mikroserwisy za sidecar mesh używają HTTP/2 prior-knowledge (h2c) do multipleksowania setek strumieni RPC przez jedno gniazdo.

WebSocket + HTTP/2 na jednym porcie

TsgcWebSocketHTTPServer obsługuje HTTP/1.1, HTTP/2 i WebSocket na jednym punkcie końcowym TLS — ALPN automatycznie kieruje każde połączenie.

WebSocket przez HTTP/2 (RFC 8441)

Dla klientów, którzy wolą tunelować ramki WebSocket wewnątrz strumieni HTTP/2, włącz Specifications.RFC8441 po stronie serwera.

Klient i serwer w kilku linijkach

Upuść komponent, ustaw TLS, gotowe. ALPN podczas uzgadniania wynegocjuje za Ciebie h2.

uses
  sgcHTTP, sgcHTTP2;

var
  HTTP2: TsgcHTTP2Client;
begin
  HTTP2 := TsgcHTTP2Client.Create(nil);
  HTTP2.TLSOptions.IOHandler := iohSChannel; // lub iohOpenSSL
  HTTP2.TLSOptions.Version   := tls1_2;

  // Dodaj niestandardowe nagłówki (kompresowane przez HPACK)
  HTTP2.Request.CustomHeaders.Add('authorization: Bearer eyJ...');

  // GET przez HTTP/2 (ALPN negocjuje h2)
  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 i WebSocket na tym samym porcie TLS
  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");

Specyfikacje i odnośniki

Autorytatywne źródła protokołów implementowanych przez te komponenty.

Dokumentacja i dema

Przejdź bezpośrednio do stron komponentów, pomocy online i gotowego do uruchomienia projektu demo dołączonego do wersji próbnej.

Klient HTTP/2 — TsgcHTTP2Client Strona komponentu: funkcje, przykłady kodu i opcje TLS dla klienta.
Serwer HTTP/2 — TsgcWebSocketHTTPServer Strona komponentu: jak włączyć HTTP/2 obok HTTP/1.1 i WebSocket na jednym porcie TLS.
Pomoc online — HTTP/2 Pełna dokumentacja właściwości, metod i zdarzeń komponentów HTTP/2.
Projekt demo — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client Gotowy do uruchomienia projekt przykładowy. Dostarczany w pakiecie sgcWebSockets — pobierz wersję próbną poniżej.
Podręcznik użytkownika (PDF) Obszerny podręcznik obejmujący każdy komponent biblioteki.

Gotowy, aby użyć HTTP/2?

Pobierz bezpłatną wersję próbną i dodaj multipleksowany ruch klienta i serwera HTTP/2 do swoich aplikacji Delphi.