TsgcTCPClient › イベント › OnError
TCP 接続で非致命的なエラーが報告されるたびに発火します。
property OnError: TsgcWSErrorEvent;
// TsgcWSErrorEvent = procedure(Connection: TsgcWSConnection; const Error: string) of object
—
OnErrorは、失敗したTLSハンドシェイク、ハートビートタイムアウト、または受信したペイロードのディスパッチ中に発生したエラーなど、TCPソケットでのデータの送受信中に検出されたトランスポートレベルの問題を報告します。Errorパラメータには失敗の説明が含まれ、Connectionパラメータは影響を受けたセッションを識別します。未処理の例外(ソケットエラー、アクセス違反など)には、代わりにOnExceptionを使用してください。Connectionが割り当てられている場合、オプションの設定にかかわらず、OnErrorが発生した後にコンポーネントはその接続を閉じます。通常はその時点でハンドラーはすでに戻っていますが、NotifyEventsがneAsynchronousに設定されている場合、セカンダリスレッドで発生したエラーはメインスレッドにキューイングされ、そのハンドラーは接続が閉じられた後に実行されることがあります。Connectionがnilの場合、何も閉じられません。
OnErrorはConnection = nilで発生することがあるため、ハンドラーは使用前に必ずConnectionを確認する必要があります。WriteDataとWriteAndWaitDataは、クライアントが接続されていないために送信できなかったメッセージをこの方法で報告します。この場合のErrorパラメータはData not sent, the client is not connected or its handshake has not completed.(resourcestring S_ERROR_CLIENT_NOT_CONNECTED)となり、イベントはメソッドを呼び出したスレッドで、メソッドが返る前に発生します。クライアントが再接続した後に書き込みが失敗した場合もConnection = nilで報告されるため、新しい接続は閉じられません。送信できなかったメッセージの報告を無効にするには、コード内でOptions.RaiseDisconnectExceptionsをFalseに設定してください。
procedure OnError(Connection: TsgcWSConnection; const Error: string);
begin
WriteLn('#error: ' + Error);
end;