ALPN

Tarafından desteklenir

 

TsgcWebSocketServer

TsgcWebSocketHTTPServer

TsgcWebSocketClient

 

*Özel Indy sürümü gerektirir.

 

Application-Layer Protocol Negotiation (ALPN), uygulama katmanı protokol müzakeresi için bir Transport Layer Security (TLS) uzantısıdır. ALPN, uygulama katmanının, ek gidiş-dönüşlerden kaçınan ve uygulama katmanı protokollerinden bağımsız olan bir şekilde, güvenli bir bağlantı üzerinden hangi protokolün gerçekleştirileceğini müzakere etmesine olanak tanır. HTTP/1.x ile karşılaştırıldığında web sayfalarının sıkıştırılmasını iyileştiren ve gecikmesini azaltan güvenli HTTP/2 bağlantıları tarafından gereklidir.

 

Client

TLSOptions.ALPNProtocols'ta, istemci tarafından hangi protokollerin desteklendiğini yapılandırabilirsiniz. İstemci sunucuya bağlandığında, bu protokoller ilk TLS handshake'i 'Client Hello' üzerinde gönderilir ve istemcinin desteklediği protokolleri listeler ve sunucu varsa hangi protokolün kullanılacağını seçer.

 

TsgcWSConnectionClient'ın ALPNProtocol özelliğine erişerek sunucu tarafından hangi protokolün seçildiğini öğrenebilirsiniz.

 

Server

Yeni bir TLS bağlantısı olduğunda, OnSSLALPNSelect olayı çağrılır, burada istemci ve sunucu tarafından desteklenen bir protokol listesine erişebilir ve sunucu bunlardan hangisinin desteklendiğini seçebilir.

 

 

Herhangi bir protokol için destek yoksa, aProtocol boş bırakılabilir.

 


// Client
procedure OnClientConnect(Connection: TsgcWSConnection);
var
  vProtocol: string;
begin
  vProtocol := TsgcWSConnectionClient(Connection).ALPNProtocol;
end;
 
// Server
procedure OnSSLALPNSelect(Sender: TObject; aProtocols: TStringList; var aProtocol: string);
var
  i: integer;
begin
  for i := 0 to aProtocols.count - 1 do
  begin 
    if aProtocols[i] = 'h2' then
    begin
      aProtocol := 'h2';
      break;
    end;
  end;
end;