TsgcHTTPServer › 事件 › OnSSLGetHandler
在创建 SSL 处理程序之前触发,以便提供自定义服务器端处理程序实例。
property OnSSLGetHandler: TsgcWSOnSSLGetHandler;
// TsgcWSOnSSLGetHandler = procedure(Sender: TObject; aType: TwsSSLHandler; var aSSLHandler: TIdServerIOHandlerSSLBase) of object
—
OnSSLGetHandler 在服务器构建用于 SSL 绑定的 TLS IOHandler 之前触发。将 aSSLHandler 分配给从 TIdServerIOHandlerSSLBase 继承的自定义类实例,以替换默认处理程序,例如插入专用的 OpenSSL 或 SChannel 实现。保持 aSSLHandler 未分配则让服务器创建默认处理程序;在这种情况下,仍可使用 OnSSLAfterCreateHandler 在创建后调整属性。组件拥有此处分配的处理程序的所有权,并在服务器销毁时将其释放。
当 IOHandlerOptions.IOHandlerType 为 iohIOCP 或 iohEPOLL 时,分配给 aSSLHandler 的处理程序必须继承自 TsgcIdServerIOHandlerOpenSSLIOCP(IOCP)或 TsgcIdServerIOHandlerOpenSSLEPOLL(EPOLL),因为只有这些处理程序才能由事件驱动的 IO 引擎驱动。使用任何其他处理程序时,服务器将在启动时引发异常。IOHandlerOptions 的值(例如线程数、超时和 TCPKeepAlive)会在 OnSSLAfterCreateHandler 触发之前应用到处理程序,因此以该事件中设置的值为准。如果您只需要更改默认处理程序的少数属性,请使用 OnSSLAfterCreateHandler 而不是替换处理程序。
procedure OnSSLGetHandler(Sender: TObject; aType: TwsSSLHandler;
var aSSLHandler: TIdServerIOHandlerSSLBase);
begin
aSSLHandler := TCustomServerSSLHandler.Create(nil);
// ... configure handler properties
end;