2013-07-12 4 views
1

때때로 나는 떴어 unhanded NetStatusEvent Red5의 서버에 연결 NetConnection를 사용하여 :NetConnection을 처리되지 않은 된 NetStatusEvent

:

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에 대한 이벤트 리스너를 추가하고 있습니다. 때때로 청취자가 전화하는 것이 가능합니까?

답변

1

NetStatusEvent 처리기에서 수신기를 제거하고 있습니다. 연결이 끊어 질 때까지 연결을 유지해야합니다. 따라서 NetStatusEvent은 리스너가 제거되기 전에 한 번만 처리됩니다. 첫 번째 이벤트 이외의 이벤트는 해당 오류를 발생시킵니다.

그래서 무슨 일이 일어나고 있는지에 따라 꽤 많은 netConnect.removeEventListener(NetStatusEvent.NET_STATUS, arguments.callee);

NetConnection 파견 해당 이벤트를 제거합니다. 매번 이벤트를 처리해야합니다. info 속성의 가능한 값 목록을 보려면이 Link을 방문하십시오. 또한 페이지 끝 부분에서 이벤트를 처리하는 방법에 대한 약간의 예가 있습니다.

+0

하나의 NetConnection.connect() 호출 중에 여러 NET_STATUS 이벤트가 발생할 수 있습니까? – davenewza

+1

'connect()'호출은 가능한'info' 속성의 배열로 1 이벤트를 발생 시키지만 연결 후에도'AppShutdown','Close','NetworkChange' 또는 일부에 대한'NET_STATUS' 이벤트를 발생시킬 수 있습니다 연결과 관련된 다른 것들. 그래서'NetConnection'이 닫힐 때까지 리스너를 손대지 말아야합니다. – Gio

+0

감사합니다! 위의'Connect()'함수는 정기적으로 호출 될 수 있습니다. 'removeEventListener'를 꺼내면 다중 anon 함수를 트리거하기 시작합니다. 생성자에서이 이벤트를 처리 할 수 ​​없습니다. 왜냐하면 콜백이'Connect()'에 전달되어야하기 때문입니다. 어떤 제안? – davenewza

1

클라이언트가 onBWCheck 또는 onBWDone 메소드를 처리하지 않으면이 메시지가 표시 될 수 있습니다. 대역폭 감지 기능이 켜져있는 경우에도 마찬가지입니다. red5.properties 파일에서이 매개 변수를 변경하여 서버를 끄고 서버를 다시 시작하십시오. 정보의

rtmp.bandwidth_detection=false 
+0

답변 해 주셔서 감사합니다. 우리는 Red5 0.9.1을 사용하고 있습니다 (미안하지만, 제 질문에 명시해야합니다).대역폭 감지는 버전 1 이후 일뿐입니다. – davenewza

+1

예, 맞습니다. 메모리가 나를 섬기는 경우 –

+1

0.9의 경우에는 onBWDone –

1

인용문

그냥 추가 조각. info.level = "error"인 NetStatusEvent 객체를 전달하면 처리되지 않은 예외가 항상 발생합니다. 그것의 특별한 사용 사례. 예를 들어,이 기능을 모두 랩핑하고 이벤트를 재 전달하기 전에 레벨을 "정보"로 변경하십시오.

관련 문제