TsgcWebSocketLoadBalancerServer › Événements › OnSSLGetHandler
Déclenché avant la création du gestionnaire SSL afin qu'une instance de gestionnaire côté serveur personnalisé puisse être fournie à l'équilibreur de charge.
property OnSSLGetHandler: TsgcWSOnSSLGetHandler;
// TsgcWSOnSSLGetHandler = procedure(Sender: TObject; aType: TwsSSLHandler; var aSSLHandler: TIdServerIOHandlerSSLBase) of object
—
OnSSLGetHandler est levé juste avant que le répartiteur de charge construise le TLS IOHandler utilisé pour les liaisons SSL. Affectez aSSLHandler à une instance de votre propre classe héritée de TIdServerIOHandlerSSLBase pour remplacer le gestionnaire par défaut, par exemple pour brancher une implémentation OpenSSL ou SChannel spécialisée. Laissez aSSLHandler non affecté pour laisser le composant créer le gestionnaire par défaut ; dans ce cas, OnSSLAfterCreateHandler peut toujours être utilisé pour ajuster les propriétés après la création. Le composant prend possession du gestionnaire affecté ici et le libérera lorsque le serveur sera détruit.
Lorsque IOHandlerOptions.IOHandlerType est iohIOCP ou iohEPOLL, le gestionnaire affecté à aSSLHandler doit hériter de TsgcIdServerIOHandlerOpenSSLIOCP (IOCP) ou TsgcIdServerIOHandlerOpenSSLEPOLL (EPOLL), car seuls ces gestionnaires peuvent être pilotés par le moteur d'entrées/sorties événementiel. Avec tout autre gestionnaire, le répartiteur de charge lève une exception lors de son démarrage. Les valeurs de IOHandlerOptions, telles que threads, timeouts et TCPKeepAlive, sont appliquées au gestionnaire avant que OnSSLAfterCreateHandler ne se déclenche, de sorte que les valeurs définies dans cet événement sont prioritaires. Si vous avez seulement besoin de modifier quelques propriétés du gestionnaire par défaut, utilisez OnSSLAfterCreateHandler au lieu de remplacer le gestionnaire.
procedure OnSSLGetHandler(Sender: TObject; aType: TwsSSLHandler;
var aSSLHandler: TIdServerIOHandlerSSLBase);
begin
aSSLHandler := TCustomServerSSLHandler.Create(nil);
// ... configure handler properties
end;