Тайм-аут в событиях AS3 - PullRequest
       36

Тайм-аут в событиях AS3

0 голосов
/ 07 апреля 2011

У меня есть объект NetConnection:

myNetConnection = new NetConnection();
myNetConnection.addEventListener(NetStatusEvent.NET_STATUS, statusHandler);
myNetConnection.connect("rtmp://address");

И в обработчике сделать это:

private function statusHandler(event:NetStatusEvent):void
            {
                switch (event.info.code)
                {
                    case "NetConnection.Connect.Success": 
                    {
                        trace("ok");
                        break;
                    }
                    case "NetConnection.Connect.Failed":
                    {
                        trace("Some problems, NetConnection.Connect.Failed");
                        break;
                    }
                }
            }

Итак, если все в порядке - я вижу "хорошо" в консоли отладки очень быстро. Но если есть какие-то проблемы - «Некоторые проблемы, NetConnection.Connect.Failed» я вижу после долгого ожидания. Мой вопрос - как я могу видеть «Некоторые проблемы, NetConnection.Connect.Failed» быстрее (как «хорошо» быстро)?

Ответы [ 2 ]

2 голосов
/ 07 апреля 2011

Проблема здесь в том, что если Flash Player не может подключиться к серверу с обычным протоколом (RTMP, порт 1935), он автоматически пытается установить соединение, используя резервные протоколы и порты. Нормальная последовательность:

NetConnection.connect ( "RTMP: // MyServer / MyApp"); // используется порт по умолчанию 1935 NetConnection.connect ( "RTMP: // MyServer: 443 / MyApp"); NetConnection.connect ( "RTMP: // MyServer: 80 / MyApp"); NetConnection.connect ( "RTMPT: // MyServer: 80 / MyApp");

Все эти попытки увеличивают окончательный тайм-аут для соединения.

Эта автоматическая последовательность повторов происходит только если начальное соединение определяет протокол RTMP и использует порт по умолчанию - например, my_nc.connect ( "RTMP: // MyServer / MyApp")

.

Вы можете найти больше информации здесь .

2 голосов
/ 07 апреля 2011

Скорее всего, вы не можете. Событие запускается настолько быстро, насколько это возможно, это сбой соединения, который требует много времени, чтобы проявиться.

Мне кажется, проблема в том, что время попытки подключения истекло. Flash пытается подключиться и устанавливает таймер, если таймер срабатывает до установления соединения. Flash приходит к выводу, что ресурс недоступен. Вы не можете получить сбой сразу, потому что соединение не прерывается, пока не сработает таймер.

Flash не может сразу сказать вам, что ресурс недоступен, потому что иногда сервер отвечает в течение миллисекунд, но иногда это может занять несколько секунд.

...