Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   «Зависает» loader.load() на медленном интернете (http://www.flasher.ru/forum/showthread.php?t=159351)

Anghram 30.06.2011 01:44

«Зависает» loader.load() на медленном интернете
 
Здравствуйте.
Нагуглил не один топик с такой же проблемой, но нигде нет решения. На Флешере такой темы не нашёл, поэтому осмелюсь задать этот вопрос и тут :)

Проблема появляется только на медленном интернете. Загрузка стартует, раз за разом ловим ProgressEvent, потом в случайном месте загрузка прерывается и всё, больше с этого места она не сдвигается. Никаких ивентов не выдаёт.

Если повторять запрос по таймеру (например, если не получаем следующий ProgressEvent в течении N секунд), то не всегда получается попадать в кеш. То 200 ОК, то 206 Partial Content (с последующей докачкой, соотвественно). Но это варварский способ.

К слову, на loader.close() и loader.unload() реакции тоже нет. А IO Error при выключении инета ловит на ура. Не советовать же пользователям рестартовать интернет... :)

Несмотря на то, что проблема явно не в коде, а в топорности подхода — любая игрушка в соцсети так же будет зависать (но там даже о IO не заботятся :)) — привожу пример кода:
Код AS3:

_loader = new Loader();
_loader.contentLoaderInfo.addEventListener(Event.COMPLETE, _onLoadComplete);
_loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, _onLoadProgress);
_loader.contentLoaderInfo.addEventListener(SecurityErrorEvent.SECURITY_ERROR, _onSecurityError);
_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, _onIOError);
_loader.contentLoaderInfo.addEventListener(HTTPStatusEvent.HTTP_STATUS, _onStatus);
_loader.contentLoaderInfo.addEventListener(Event.INIT, _onInit);
_loader.contentLoaderInfo.addEventListener(Event.OPEN, _onOpen);
_loader.contentLoaderInfo.addEventListener(Event.UNLOAD, _onUnLoad);
 
_loadOpened = false;
_loader.load(new URLRequest(_url), _context);

Может уже кто-то изобрёл велосипед, который я пытаюсь собрать сейчас? :) Благодарю за любые идеи/советы.

Rzer 30.06.2011 01:55

Успокойтесь. У кого данное наблюдается - уже привык жать F5 в браузере. Если кто-то что-то не отдаёт, это не вина плеера.

Anghram 30.06.2011 02:28

Имея 300к уников в сутки, не могу быть спокоен, даже если 1% не могут загрузить флешку.

Но, как бы то ни было, рефреш не помогает. Поставил себе Йоту с "остаточным" тарифом 64кбит/с — ощутил все прелести диалапа. Таки в регионах очень большая аудитория сидит. На gprs и прочих радостях жизни.

Более того, рефреш убивает кеш. Со второго-третьего раза прелоадер показывает 0% и по фаребагу и чарльзу видно, что браузер даже не отправляет запрос в инет. Браузер считает, что файл загружен до конца и не делает запрос.

Rzer 30.06.2011 02:34

Что это у Вас там такое 300k? Может сервер прерывает соединение?

Anghram 30.06.2011 02:37

Сервер справляется.

Напомню:
1. Проблема только с медленным инетом. Выключаю Йоту - всё работает. Но даже если он прерывал бы — было бы событие.
2. Проблема наблюдается в любой ёмкой флешке (к которой я не имею отношения, соответственно): любая флешовая мини-игра так же сорвётся на прелоадере.

Rzer 30.06.2011 02:57

Запихивайте всё внутрь основной флешки раз не можете смириться.

Anghram 30.06.2011 03:02

Подход ясен, спасибо :) Хотелось бы перевести тему в русло поставленного вопроса: есть ли возможность возобновить «повисшее» соединение.


Часовой пояс GMT +4, время: 14:53.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.