通信中にエラーが発生することがあります。サーバーは認証されていないか、 メッセージの形式が正しくないことを理由に接続を切断する場合があります。 エラーがキャプチャされる2つのイベントがあります。
このイベントは、無効なメッセージタイプ、無効な UTF-8 文字列など、WebSocket プロトコルでエラーが発生するたびに発火します。
OnError は、WriteData、WriteAndWaitData、または Ping がクライアントが接続されていないためにメッセージを送信できなかった場合、あるいは WriteData と WriteAndWaitData の場合は WebSocket ハンドシェイクがまだ完了していないために送信できなかった場合にも、Connection = nil で発火します。その場合 Error パラメータは Data not sent, the client is not connected or its handshake has not completed. となります。呼び出し元に例外は発生せず、クライアントも切断されないため、このイベント内で Connection を使用する前には必ず nil かどうかを確認してください。
procedure OnError(Connection: TsgcWSConnection; const Error: string);
begin
WriteLn('#error: ' + Error);
end;
このイベントは、アクティブでないソケットへの書き込みや、存在しないオブジェクトへのアクセスなど、例外が発生するたびに発生します。
procedure OnException(Connection: TsgcWSConnection; E: Exception);
begin
WriteLn('#exception: ' + E.Message);
end;
デフォルトでは、サーバーによって接続が閉じられると、例外が発生します。これらの例外を発生させたくない場合は、Options.RaiseDisconnectExceptions を無効にしてください。
Options.RaiseDisconnectExceptions は、クライアントが接続されていないために送信できなかったメッセージの OnError による報告も制御します。以前のバージョンのようにこれらのメッセージを黙って破棄するには、False に設定してください。