TsgcWebSocketHTTPServer › イベント › OnSSLALPNSelect
ALPN対応のハンドシェイク中に発生し、アプリケーションがネゴシエートするプロトコルを選択できるようにします。
property OnSSLALPNSelect: TsgcWSOnSSLALPNSelect;
// TsgcWSOnSSLALPNSelect = procedure(Sender: TObject; aProtocols: TStringList; var aProtocol: String) of object
—
クライアントが TLS ハンドシェイク中にアプリケーション層プロトコルネゴシエーションをアドバタイズすると、OnSSLALPNSelect が発生し、サーバーがどのプロトコルをネゴシエートするかを決定できます。aProtocols パラメータはクライアントがアドバタイズした名前(例: "h2"、"http/1.1")を含む TStringList です。サーバーが使用したいプロトコルを aProtocol に割り当ててください。HTTP2Options.Enabled が True の場合、コンポーネントはデフォルトで "h2" を返し、HTTP/2 が透過的にネゴシエートされます。サーバーが HTTP/1.1 やカスタムプロトコルを強制したい場合は、ここで選択をオーバーライドしてください。空の文字列を返すとデフォルトの動作が維持されます。
procedure OnSSLALPNSelect(Sender: TObject; aProtocols: TStringList;
var aProtocol: String);
begin
if aProtocols.IndexOf('h2') >= 0 then
aProtocol := 'h2'
else
aProtocol := 'http/1.1';
end;