HTTP/2 Protokolü
Delphi ve C++Builder için yerel HTTP/2 istemcisi ve sunucusu. İkili çerçeveleme, akış çoklama, HPACK başlık sıkıştırması ve ALPN anlaşması — IIS, Apache veya Indy bağımlılığı yok.
Delphi ve C++Builder için yerel HTTP/2 istemcisi ve sunucusu. İkili çerçeveleme, akış çoklama, HPACK başlık sıkıştırması ve ALPN anlaşması — IIS, Apache veya Indy bağımlılığı yok.
İki üretime hazır bileşen, tam HTTP/2 (RFC 9113) iletişim protokolünü uygular. HTTP/2 API'lerini tüketmek için istemciyi, bunları yayımlamak için sunucuyu kullanın — veya ikisini aynı uygulama içinde.
Yerel HTTP/2 istemcisi — tek bir TLS bağlantısı üzerinden çoklanmış GET/POST/PUT/DELETE, HPACK ile sıkıştırılmış başlıklar, ALPN h2 yükseltmesi veya ön bilgi h2c, sunucu-push işleme ve bearer / basic / NTLM kimlik doğrulaması.
Yerel HTTP/2 sunucusu — aynı WebSocket HTTP sunucusu, tek bir TLS bağlantı noktasında HTTP/1.1, HTTP/2 (h2) ve WebSocket sunar. ALPN anlaşması, akış çoklama, HPACK yanıtları ve isteğe bağlı RFC 8441 HTTP/2 üzerinden WebSocket başlatma.
Hem istemciye hem de WebSocket HTTP sunucusuna bağlanmış birinci sınıf bir HTTP/2 çerçeveleme uygulaması.
TsgcHTTP2ClientTsgcWebSocketHTTPServer
Windows, macOS, Linux, iOS, Android
İstemci: Standard / Pro / Enterprise
Sunucu: Pro / Enterprise
HTTP/2'nin HTTP/1.1'e göre tüm kazanımları — ayrı bir web sunucusu başlatmadan, yerel Delphi/C++Builder kodunda.
İstekler ve yanıtlar ikili çerçevelere bölünür ve belirleyici bir durum makinesi tarafından ayrıştırılır. Artık metin satırı ayrıştırması veya HTTP/1.1 belirsizliği yok.
Onlarca devam eden istek tek bir TCP/TLS bağlantısını paylaşır — HTTP katmanında head-of-line engelleme yok, istek başına ek yuva yok.
Yerleşik HPACK kodlayıcı/kod çözücü (RFC 7541). Tekrarlanan çerezler, kimlik doğrulama token'ları ve content-type başlıkları, ilk istekten sonra neredeyse sıfır bayta mal olur.
TLS el sıkışması sırasında eş h2 ve http/1.1 sunar; anlaşılan ALPN değeri, hiçbir gidiş-dönüş boşa harcanmadan protokolü seçer.
Güvenilir dahili bağlantılar ve service-mesh sidecar'ları için her iki taraf da ALPN'yi atlayıp HTTP2_PriorKnowledge aracılığıyla düz metin üzerinden HTTP/2 başlatabilir.
Sunucu proaktif olarak PUSH_PROMISE yanıtları gönderebilir; istemci bunları önbelleğe alma için OnHTTP2StreamData aracılığıyla açığa çıkarır. Not: genel web'de kullanımdan kaldırılmış, dahili olarak hâlâ kullanışlıdır.
Akış başına öncelik ve bağımlılık ipuçları, kritik yanıtların (kimlik doğrulama, gezinme, JSON-RPC sonuçları) aynı bağlantıdaki toplu aktarımları geçmesine olanak tanır.
Akış başına ve bağlantı başına WINDOW_UPDATE akış kontrolü, büyük bir yanıtın daha küçük olanları aç bırakmasını önler — SETTINGS çerçeveleri aracılığıyla ayarlanabilir.
Windows çekirdek TLS (DLL yok) için TLSOptions.IOHandler değerini iohSChannel veya tam çok platformlu 1.2/1.3 desteği için iohOpenSSL olarak ayarlayın.
HTTP/2'nin çoklama ve HPACK tasarruflarının kendini hemen amorti ettiği hazır eklenti senaryoları.
Apple'ın APNs sağlayıcı API'si HTTP/2 gerektirir. TsgcHTTP2Client, Apple Push bileşenini token tabanlı kimlik doğrulamayla uçtan uca yönetir.
Google'ın FCM HTTP v1 API'si HTTP/2 üzerinden çalışır. Aynı bileşen, service-account JWT oluşturma ile FCM'yi güçlendirir.
Çoğu bulut API'si (Stripe, GitHub, Cloudflare, Google, Azure…) varsayılan olarak HTTP/2 konuşur — çoklanmış istemciler paralel çağrılarda gecikmeyi azaltır.
Sidecar mesh arkasındaki dahili mikrohizmetler, tek bir yuva üzerinden yüzlerce RPC akışını çoklamak için HTTP/2 ön bilgisini (h2c) kullanır.
TsgcWebSocketHTTPServer, tek bir TLS uç noktasında HTTP/1.1, HTTP/2 ve WebSocket sunar — ALPN her bağlantıyı otomatik olarak yönlendirir.
WebSocket çerçevelerini HTTP/2 akışları içinde tünellemeyi tercih eden istemciler için sunucuda Specifications.RFC8441 etkinleştirin.
Bileşeni bırakın, TLS'yi ayarlayın, başlayın. ALPN, el sıkışma sırasında sizin için h2 üzerinde anlaşır.
uses
sgcHTTP, sgcHTTP2;
var
HTTP2: TsgcHTTP2Client;
begin
HTTP2 := TsgcHTTP2Client.Create(nil);
HTTP2.TLSOptions.IOHandler := iohSChannel; // or iohOpenSSL
HTTP2.TLSOptions.Version := tls1_2;
// Add custom headers (compressed by HPACK)
HTTP2.Request.CustomHeaders.Add('authorization: Bearer eyJ...');
// GET over HTTP/2 (ALPN negotiates 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 and WebSocket on the same 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");
Bileşen sayfalarına, çevrimiçi yardıma ve deneme içinde gelen kullanıma hazır demo projesine doğrudan bağlanın.
| HTTP/2 İstemcisi — TsgcHTTP2Client Bileşen sayfası: istemci için özellikler, kod örnekleri ve TLS seçenekleri. | Aç | |
| HTTP/2 Sunucusu — TsgcWebSocketHTTPServer Bileşen sayfası: HTTP/2'yi tek bir TLS bağlantı noktasında HTTP/1.1 ve WebSocket ile birlikte nasıl etkinleştireceğiniz. | Aç | |
| Çevrimiçi Yardım — HTTP/2 HTTP/2 bileşenleri için tam özellik, metot ve olay referansı. | Aç | |
| Demo Projesi — Demos\20.HTTP_Protocol\01.HTTP2_Server_And_Client Kullanıma hazır örnek proje. sgcWebSockets paketi içinde gelir — aşağıdan denemeyi indirin. | Aç | |
| Kullanıcı Kılavuzu (PDF) Kütüphanedeki her bileşeni kapsayan kapsamlı kılavuz. | Aç |