TsgcWebSocketLoadBalancerServer › Eventos › OnSSLGetHandler
Disparado antes de o SSL handler ser criado, para que uma instância de handler personalizada do lado do servidor possa ser fornecida ao load balancer.
property OnSSLGetHandler: TsgcWSOnSSLGetHandler;
// TsgcWSOnSSLGetHandler = procedure(Sender: TObject; aType: TwsSSLHandler; var aSSLHandler: TIdServerIOHandlerSSLBase) of object
—
OnSSLGetHandler é gerado logo antes de o balanceador de carga construir o TLS IOHandler utilizado para os bindings SSL. Atribua a aSSLHandler uma instância de sua própria classe herdada de TIdServerIOHandlerSSLBase para substituir o handler padrão, por exemplo para conectar uma implementação especializada de OpenSSL ou SChannel. Deixe aSSLHandler não atribuído para permitir que o componente crie o handler padrão; nesse caso, OnSSLAfterCreateHandler ainda pode ser utilizado para ajustar propriedades após a criação. O componente assume a propriedade do handler atribuído aqui e o liberará quando o servidor for destruído.
Quando IOHandlerOptions.IOHandlerType for iohIOCP ou iohEPOLL, o handler atribuído a aSSLHandler deve herdar de TsgcIdServerIOHandlerOpenSSLIOCP (IOCP) ou TsgcIdServerIOHandlerOpenSSLEPOLL (EPOLL), pois somente esses handlers podem ser controlados pelo motor de E/S orientado a eventos. Com qualquer outro handler, o balanceador de carga gera uma exceção ao ser iniciado. Os valores de IOHandlerOptions, como threads, timeouts e TCPKeepAlive, são aplicados ao handler antes de OnSSLAfterCreateHandler ser disparado, portanto os valores definidos nesse evento têm precedência. Se você precisar apenas alterar algumas propriedades do handler padrão, utilize OnSSLAfterCreateHandler em vez de substituir o handler.
procedure OnSSLGetHandler(Sender: TObject; aType: TwsSSLHandler;
var aSSLHandler: TIdServerIOHandlerSSLBase);
begin
aSSLHandler := TCustomServerSSLHandler.Create(nil);
// ... configure handler properties
end;