NetConnection未处理NetStatusEvent

时间:2013-07-12 07:17:00

标签: actionscript-3 events actionscript red5 netconnection

使用NetStatusEvent连接到Red5服务器时,我偶尔会收到一个无法使用的NetConnection

Error #2044: Unhandled NetStatusEvent:. level=error, code=NetConnection.Call.Failed

这是我连接的方式(NetConnection.connect()被调用的唯一地方):

public function Connect(callBack:Function = null):void 
{
    if (IsConnected())
    {
        if (callBack != null) 
        {
            callBack.call();
        }
    }
    else // Not connected
    {
        netConnect.addEventListener(NetStatusEvent.NET_STATUS, function(e:NetStatusEvent):void
        {
            // OnConnect called whenever there is a net status event
            OnConnect(e, callBack);
            netConnect.removeEventListener(NetStatusEvent.NET_STATUS, arguments.callee);
        });

        try
        {
            // Attempt to connect to Media Server
            netConnect.connect(MEDIA_SERVER_URI, true);
        }
        catch(error:Error)
        {
            logger.LogError("NetConnection.connect threw an exception.", error);
        }
    }
}

我正为NetStatusEvent.NET_STATUS添加一个事件监听器。有时我的听众打电话怎么可能?

3 个答案:

答案 0 :(得分:1)

您正在NetStatusEvent处理程序中删除您的侦听器。您应该保留它直到连接关闭。这就是NetStatusEvent仅在其侦听器被删除之前处理​​一次的原因。除了第一个事件之外的任何其他事件都会抛出该错误。

删除netConnect.removeEventListener(NetStatusEvent.NET_STATUS, arguments.callee);

NetConnection根据发生的事情发送相当多的事件。你必须每次都处理这个事件。有关info属性的可能值列表,请访问此Link。还有一个如何在页面末尾处理事件的例子。

答案 1 :(得分:1)

如果您的客户端不处理onBWCheck或onBWDone方法,您可能会看到此信息。如果您打开带宽检测,也会发生这种情况;通过更改red5.properties文件中的此参数并在服务器上关闭它,然后重新启动服务器。

rtmp.bandwidth_detection=false

答案 2 :(得分:1)

  

块引用

只是另外一条信息。使用info.level =“error”调度NetStatusEvent对象将始终抛出Unhandled Exception。它是一个特殊的用例。例如,在重新分派事件之前,我将包装所有这些功能并将级别更改为“info”。