TsgcWebSocketServer › イベント › 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;