Comunidad de diseño web y desarrollo en internet online

Problema al itnentar reconectar una NetConnection

Citar            
MensajeEscrito el 25 Jul 2012 11:18 am
Hola a todos, en mi aplicación creo una conexión unsando NetConnection, y en la función NetStatusHandler quiero intentar reconectar en caso de caída, algo así:

Código ActionScript :

var triedToRecconnect:Boolean:false;
this.addEventListener("reconnect", recconnectNetConnection);
function netRED5Status(event:NetStatusEvent):void 
{
   var info:Object = event.info;
   switch (info.code) 
   {
      case "NetConnection.Connect.Success":
         trace("NetConnection.Connect.Success");
         break;
      case "NetConnection.Connect.Closed":
            trace("closed triedToRecconnect = " + triedToRecconnect);
            if (triedToRecconnect == false)
            {
               recconnectNetConnection();
            }
            else
            {
               father.showError("closed");
            }
         }
         break;
      case "NetConnection.Connect.Failed":
         trace("failed triedToRecconnect = " + triedToRecconnect);
         if (triedToRecconnect == false)
         {
            recconnectNetConnection();
         }
         else
         {
            trace("connectFailed");
         }
         break;            
      default:
         trace(info.code + " triedToRecconnect = " + triedToRecconnect);
         if (triedToRecconnect == false)
         {
            dispatchEvent(new Event("reconnect"));
         }
         else
         {
            trace(info.code);
         }
   }
}
function recconnectNetConnection(e:Event):void
{
   trace("reconnecting");
   nc.connect("rtmp:localhost:1935/fitcDemo", "0");
   triedToRecconnect = true;
}

El problema es que me saca el siguiente error: Error: Error #2132: No se puede llamar a NetConnection.connect desde un controlador de eventos netStatus.

Como puedo solucionarlo? Alguna idea?

Muchas gracias.

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Jul 2012 01:56 pm
Si fuera esta llamada la que se ejecuta te daría error de que espera un parametro y le pasas 0

recconnectNetConnection();

Supongo que es el listener de reconnect, que pusiste en el default , lo cual es un error ya que hay una decena de mensajes posibles, solo handleas un par y el resto lo mandas a reconnect por un mecanismo de eventos cuando deberia ser llamada directa (los eventos es cuando una instancia se subscribe a otra)

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 26 Jul 2012 06:32 am
Hola Jorge, gracias por la respuesta, pero sigue dándome el mismo error. He quitado el listener y he llamado directamente a la función "recconnectNetConnection()", pero como te he dicho, sigue igual.
Dejo el código a continuación:

Código ActionScript :

private var triedToRecconnect:Boolean = false;
private var nc:NetConnection = new NetConnection();
nc.objectEncoding = ObjectEncoding.AMF3;
         
// associate the event status change of the connection
nc.addEventListener(NetStatusEvent.NET_STATUS, netRED5Status);
nc.connect("rtmp:localhost:1935/fitcDemo", "1");
nc.client = this;
private function netRED5Status(event:NetStatusEvent):void 
{
   var info:Object = event.info;
   switch (info.code) 
   {
      case "NetConnection.Connect.Success":
         trace("connection created");
         break;
      case "NetConnection.Connect.Closed":
         if (triedToRecconnect == false)
         {
            recconnectNetConnection();
         }
         else
         {
            trace("Closed");
         }
         break;
      case "NetConnection.Connect.Failed":
         if (triedToRecconnect == false)
         {
            recconnectNetConnection();
         }
         else
         {
            trace("failed");
         }
         break;            
      default:
         if (triedToRecconnect == false)
         {
            recconnectNetConnection();
         }
         else
         {
            trace(info.code);
         }
   }
}
private function recconnectNetConnection():void
{
   trace("reconnecting");
   nc.connect("rtmp:localhost:1935/fitcDemo", "0");
   triedToRecconnect = true;
}

El error que me da el Flash es el siguiente:
Error: Error #2132: No se puede llamar a NetConnection.connect desde un controlador de eventos netStatus.
at flash.net::NetConnection/connect()
at src::MyClass/recconnectNetConnection()
at src::MyClass/netRED5Status()
Alguna idea?
La cadena de conexión que he puesto es a modo de ejemplo.
Muchas gracias

Por Palacio

Claber

198 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.