我有一个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”(快速“ok”)?
答案 0 :(得分:2)
你很可能不能。事件尽可能快地触发,这是连接失败,需要很长时间才能显现出来。
在我看来,问题是连接尝试超时。如果计时器在建立连接之前触发,则Flash会尝试连接并设置计时器Flash会断定该资源不可用。您不能立即获得故障,因为在计时器触发之前连接不会失败。
Flash无法立即告诉您资源不可用,因为有时服务器会在几毫秒内响应,但有时可能需要几秒钟。
答案 1 :(得分:2)
这里的问题是,如果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的”)。
您可以找到更多信息here。