私は現在、NetConnectionオブジェクトを介してRed5アプリケーション/メディアサーバーと通信するクライアントをActionScript3で作成しています。サーバーは、ビデオ、オーディオ、リモートプロシージャコールなど、この接続を介して複数の種類のデータをクライアントに送信します。不確定な時間(場合によっては10秒、場合によっては10分)が経過すると、デバッグバージョンのFlashクライアントのポップアップウィンドウに次のエラーが表示されます。
"Error: Error #2030: End of file was encountered."
私はこのエラーの原因を突き止めようとしているところですが、本当に私を悩ませているのは、それを捕まえられないように見えることです。エラーはおそらく低レベルのネットワーク読み取りの失敗を示していると思いますが、デバッグフラッシュプレーヤーでポップアップウィンドウが生成されるという事実は、それをキャッチできるはずであることを意味します。
エラーには関連するスタックトレースがないため、ベースのスプライトオブジェクトにキャッチされない例外ハンドラーを追加するところまで行きました。
public class MyClient extends Sprite
{
public function FOWClient()
{
loaderInfo.uncaughtErrorEvents.addEventListener(UncaughtErrorEvent.UNCAUGHT_ERROR, uncaughtErrorHandler);
}
private function uncaughtErrorHandler(event:UncaughtErrorEvent):void
{
trace("UNCAUGHT EXCEPTION!!!");
}
}
意図的にエラーをスローすると、キャッチされなかった例外ハンドラーが正しく呼び出されますが、これError #2030
が発生したときに呼び出されることはありません。
したがって、私に受け入れられる結果は実際には2つあります。
- この「ファイルの終わりが見つかりました」エラーをキャッチしてコードで処理するにはどうすればよいですか?
- 私がそれを捕まえることができないならば、それを引き起こしているものと私がそれをどのように修正するかについて何か考えはありますか?
サーバーからクライアントへのRPC呼び出しを無効にすると、オーディオとビデオを残しても問題が発生しないため、RPC呼び出しに関係するように絞り込んだと確信しています。残念ながら、それ以上の良いアイデアはまだありません。
どんな助けでも大歓迎です。ありがとう!