TsgcWebSocketHTTPServer › Events › OnSSLALPNSelect
Fires during an ALPN-enabled handshake so the application can pick which protocol to negotiate.
property OnSSLALPNSelect: TsgcWSOnSSLALPNSelect;
// TsgcWSOnSSLALPNSelect = procedure(Sender: TObject; aProtocols: TStringList; var aProtocol: String) of object
—
When a client advertises Application-Layer Protocol Negotiation during the TLS handshake, OnSSLALPNSelect is raised so the server can decide which protocol to negotiate. The aProtocols parameter is a TStringList with the names advertised by the client (for example "h2", "http/1.1"); assign aProtocol to the one that the server wants to use. When HTTP2Options.Enabled is True the component returns "h2" by default so HTTP/2 is negotiated transparently; override the selection here if the server wants to force HTTP/1.1 or a custom protocol. Returning an empty string leaves the default behaviour in place.
procedure OnSSLALPNSelect(Sender: TObject; aProtocols: TStringList;
var aProtocol: String);
begin
if aProtocols.IndexOf('h2') >= 0 then
aProtocol := 'h2'
else
aProtocol := 'http/1.1';
end;