TsgcWebSocketLoadBalancerServer › Eventi › OnSSLGetHandler
Si attiva prima che venga creato l'handler SSL, in modo che un'istanza di handler personalizzata lato server possa essere fornita al load balancer.
property OnSSLGetHandler: TsgcWSOnSSLGetHandler;
// TsgcWSOnSSLGetHandler = procedure(Sender: TObject; aType: TwsSSLHandler; var aSSLHandler: TIdServerIOHandlerSSLBase) of object
—
OnSSLGetHandler viene sollevato appena prima che il load balancer costruisca il TLS IOHandler utilizzato per i binding SSL. Assegnare aSSLHandler a un'istanza della propria classe ereditata da TIdServerIOHandlerSSLBase per sostituire l'handler predefinito, ad esempio per collegare un'implementazione specializzata OpenSSL o SChannel. Lasciare aSSLHandler non assegnato per consentire al componente di creare l'handler predefinito; in tal caso, OnSSLAfterCreateHandler può comunque essere utilizzato per modificare le proprietà dopo la creazione. Il componente diventa proprietario dell'handler qui assegnato e lo libererà quando il server viene distrutto.
Quando IOHandlerOptions.IOHandlerType è iohIOCP o iohEPOLL, l'handler assegnato a aSSLHandler deve ereditare da TsgcIdServerIOHandlerOpenSSLIOCP (IOCP) o TsgcIdServerIOHandlerOpenSSLEPOLL (EPOLL), perché solo questi handler possono essere pilotati dal motore IO guidato dagli eventi. Con qualsiasi altro handler, il load balancer solleva un'eccezione all'avvio. I valori di IOHandlerOptions, come thread, timeout e TCPKeepAlive, vengono applicati all'handler prima che si attivi OnSSLAfterCreateHandler, quindi i valori impostati in tale evento hanno la precedenza. Se è necessario modificare solo alcune proprietà dell'handler predefinito, utilizzare OnSSLAfterCreateHandler invece di sostituire l'handler.
procedure OnSSLGetHandler(Sender: TObject; aType: TwsSSLHandler;
var aSSLHandler: TIdServerIOHandlerSSLBase);
begin
aSSLHandler := TCustomServerSSLHandler.Create(nil);
// ... configure handler properties
end;