В настоящее время я пишу клиент на 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
произойдет.
Так что на самом деле есть два варианта, которые были бы приемлемы для меня:
- Как, черт возьми, я могу поймать эту ошибку «Обнаружен конец файла» и исправить ее с помощью кода?
- Если я не могу это уловить, есть ли какие-нибудь мысли о том, что вызывает это и как это исправить?
Я почти уверен, что сузил круг вопросов до вызовов RPC, выполняемых с моего сервера на мой клиент, потому что, когда я отключаю их, но оставляю аудио и видео, я не вижу проблемы. К сожалению, кроме этого у меня пока нет хороших идей.
Любая помощь приветствуется. Спасибо!