TsgcWebSocketLoadBalancerServer › Events › 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)から継承している必要があります。イベント駆動のI/Oエンジンを駆動できるのはこれらのハンドラーだけだからです。それ以外のハンドラーでは、ロードバランサーが起動時に例外を発生させます。IOHandlerOptionsの値(スレッド数、タイムアウト、TCPKeepAliveなど)はOnSSLAfterCreateHandlerが発生する前にハンドラーへ適用されるため、そのイベント内で設定した値が優先されます。デフォルトハンドラーの一部のプロパティだけを変更したい場合は、ハンドラーを置き換える代わりにOnSSLAfterCreateHandlerを使用してください。
procedure OnSSLGetHandler(Sender: TObject; aType: TwsSSLHandler;
var aSSLHandler: TIdServerIOHandlerSSLBase);
begin
aSSLHandler := TCustomServerSSLHandler.Create(nil);
// ... configure handler properties
end;