Как я могу поймать и / или исправить ошибку № 2030: обнаружен конец файла в NetConnection в ActionScript 3?

В настоящее время я пишу клиент на ActionScript 3, который общается с приложением / медиа-сервером Red5 через объект NetConnection. Сервер отправляет клиенту несколько типов данных по этому соединению, включая видео, аудио и удаленные вызовы процедур. По прошествии неопределенного времени (иногда 10 секунд, иногда 10 минут) я вижу следующую ошибку во всплывающем окне моей отладочной версии клиента Flash:

"Error: Error #2030: End of file was encountered."

Я пытаюсь понять, что вызывает эту ошибку, и что меня действительно сводит с ума, так это то, что я не могу ее уловить. Я понимаю, что ошибка, вероятно, указывает на некоторую ошибку чтения сети низкого уровня, но тот факт, что она генерирует всплывающее окно в проигрывателе отладочной флэш-памяти, означает, что я смогу ее поймать.

Поскольку с ошибкой не связана трассировка стека, я дошел до того, что добавил обработчик неперехваченных исключений в свой базовый объект Sprite:

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 произойдет.

Так что на самом деле есть два варианта, которые были бы приемлемы для меня:

  1. Как, черт возьми, я могу поймать эту ошибку «Обнаружен конец файла» и исправить ее с помощью кода?
  2. Если я не могу это уловить, есть ли какие-нибудь мысли о том, что вызывает это и как это исправить?

Я почти уверен, что сузил круг вопросов до вызовов RPC, выполняемых с моего сервера на мой клиент, потому что, когда я отключаю их, но оставляю аудио и видео, я не вижу проблемы. К сожалению, кроме этого у меня пока нет хороших идей.

Любая помощь приветствуется. Спасибо!


person Brent Writes Code    schedule 30.03.2011    source источник
comment
Я не знаю, как вам помочь, но я дам вам некоторую информацию о том, что со мной произошло, что может дать вам некоторое представление. Я создал флеш-клиент telnet, полнофункциональный, с полным анализом и т. Д., При этом работая со всеми regEx для анализа, эта ошибка время от времени всплывала. Кажется, что если бы я попытался прочитать за пределами byteArray, эта ошибка возникла бы (по очевидным причинам в моем случае). Я не могу себе представить, что нормальный загрузчик в as3 делает это, но это то, что было причиной этого для меня.   -  person Feltope    schedule 31.03.2011


Ответы (1)


Некоторые из этих ошибок возникают, если не добавлен надлежащий слушатель.

Вы слушаете asyncError и ioError события от вашего сетевого соединения?

Если нет, просто попробуйте.

person jbalsas    schedule 31.03.2011
comment
год почти уверен, что это IO_ERROR - person The_asMan; 31.03.2011