Comunidad de diseño web y desarrollo en internet online

comportamiento muy raro

Citar            
MensajeEscrito el 24 Feb 2009 12:03 pm
Hola que tal, tengo este codigo que funciona de 10:

Código :

var ej:Array = new Array();
ej.push(new XMLSocket());

ej[0].connect("127.0.0.1", 2468);

ej[0].onConnect = function(exito)
{
   if(exito)
   {
      trace("Conexion Exitosa");
      ej[0].send("<getrooms />");
   }
   else
   {
      trace("Conexion Erronea");
   }
}

ej[0].onXML = function(msg)
{
   trace("Resivimos un mensaje");
   trace(msg);
}


bueno se conecta a un servidor que tengo echo en python, el mismo por consola aparece "se a recivido un getroom" con esto me aseguro que esta info llego al server, como podran ver, si se conecta envia un etiqueta xml al servidor y el servidor le responder con informacion, al probar este codigo me sale por la consola:

Conectando a 127.0.0.1
Conexion Exitosa
Resivimos un mensaje
<error>You must login first</error> OFF: por mas que diga error, esta todo ok, tiene quedarme este error porque no envie al server un nombre de usuario...

osea que todo funciona bien, pero en este codigo no:

Código :

var sockets:Array = new Array();      //Obj de conexion
var servers:Array = new Array();      //IPs agregadas


servers.push("127.0.0.1");
sockets.push(new XMLSocket());

//por cada servidor se crea un socket
for(i = 0; i < servers.length; i++)
{
   //Conectamos a al servidor
   sockets[i].connect(servers[i], 2468);
   trace("Conectando a " + servers[i]);
   
   //Creamos una funcion de conexion
   sockets[i].onConnect = function(exito)
   {
      //Si se conecta al servidor procedo
      if(exito)
      {
         trace("Conexion Exitosa");
         sockets[i].send("<getrooms />");
      }
      //Si no se conecta al servidor procedo
      else
      {
         trace("Conexion Erronea");
      }
   }

   sockets[i].onXML = function(msg)
   {
      trace("Resivimos un mensaje");
   }
}


en este codigo por consola me aparece esto:

Conectando a 127.0.0.1
Conexion Exitosa

y nada mas, pero en el servidor no me aparece "se resivio un getroom" significa que el server no resive la info de flash, o mas vien flash no le envia anda, pero si funciona si en unos fotogramas mas adelantes pongo un:

_root.sockets[0].send("<getrooms />");

La verdad que ni idea que hacer, lo que estoy haciendo tiene que ser haci si o si porque lo que estoy haciendo es conectarme a servidores, perdir infrmacion y salir, y despues de recopilar la informacion mostrarsela al usuario.

ojala alguno pueda ayudarme :S

Byee Saludos!

Por wawi

325 de clabLevel

2 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 24 Feb 2009 05:51 pm
Hola, porque no pruebas que cargue por pasos, es decir, si todo lo cargas en el mismo frame
Primero _root.getTotalBytes, etc... que te cargue la pelicula completa, entonces llamas un intervalo
setInterval algo mas que tengas que cargar
luego if(success)
onLoad XML socket, usando try catch, para registrar algun ERROR,
bueno me imagino que ya los has de tener asi.

o tambien si te conectas a algun otro servidor System.security.allowDomain();, bueno se que sirve parapedir info de un swf en un dominio a otro swf de otro
¿No te has fijado si en el output del flashplayer te trae la informacion que solicitas?

Por comicSans

Claber

151 de clabLevel



 

firefox
Citar            
MensajeEscrito el 24 Feb 2009 07:03 pm
wawi, tu firma excede el tamaño máximo permitido (350x50). Por favor, redúcela.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 24 Feb 2009 09:33 pm
ok ahora la saco, probe el try y el catch y no me tira ningun error, puse el codigo en el ultimo fotograma, como para que no tenga que ver con la precarga, pero tampoco nada, tal ves es porque estan dentro de un for, pero igual no tiene que ver porque si envio el _root.sockets[0].send("<getrooms />"); unos fotogramas despues me funciona el codigo, ademas es ridiculo que l primer codigo funcione y el segundo no, porque los dos tienen el mismo funcinamiento, nadamas que el segundo tiene coerencia, el primero lo hice para testear que crearando array funcionara

Byee Saludos!

Por wawi

325 de clabLevel

2 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 24 Feb 2009 11:42 pm
alguno que sepa?

Por wawi

325 de clabLevel

2 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 25 Feb 2009 08:59 am
bueno miren muy bien esto, este codigo funciona:

Código :

var ej:Array = new Array();
ej.push(new XMLSocket());

ej[0].connect("127.0.0.1", 2468);

ej[0].onConnect = function(exito)
{
   if(exito)
   {
      trace("Conexion Exitosa");
      ej[0].send("<getrooms />");
   }
   else
   {
      trace("Conexion Erronea");
   }
}

ej[0].onXML = function(msg)
{
   trace("Resivimos un mensaje");
   trace(msg);
}


pero este no:

Código :

var ej:Array = new Array();
ej.push(new XMLSocket());


for(i = 0; i < 1; i++)
{
   ej[i].connect("127.0.0.1", 2468);
   
   ej[i].onConnect = function(exito)
   {
      if(exito)
      {
         trace("Conexion Exitosa");
         ej[i].send("<getrooms />");
      }
      else
      {
         trace("Conexion Erronea");
      }
   }
   
   ej[i].onXML = function(msg)
   {
      trace("Resivimos un mensaje");
      trace(msg);
   }
}


como pueden ver el segundo tiene un for el primero no, el seguno code me conecta pero no me envia, por supuesto si unos fotogramas despues, ni el segundo ni terceo, sino a partir del 4to pongo :

_root.ej[0].send("<getrooms />");

funciona, no creo que sea un problema de que tenga que esperar unos intervalos... porque con el primer codigo no tengo que esperar nada :S asi qe esto me deja sin palabras :S voy a seguir tocando y tocando aver como lo soluciono si alguien tiene alguna idea por favor digamela..... es por estas cosas que odio as2, esta muy mal echo, en las clases para declarar algunas clases tenes que hacer un quilombo con el constructor :S

Byee Saludos!

Por wawi

325 de clabLevel

2 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 25 Feb 2009 09:12 am
yo otra ves, van 4seguidos, perdon... pero cristalab no tiene la funcion de "EDITAR" :S.... ya esta abandono flash: en el codigo que no funciona "el segundo", si en ves de poner la "i" dentro de los corchetes pones un 0... que es el numero que da el for, funciona :(, osea ya esta diganme que hago, me dedico a jardineria, empleado domestico, medico, psicologo, maestro, vendedor, etc, porque programadado no puedo seguir si no resuelvo esto, me saco la firma de aca abajo y enves de "Programmer" me pongo "Jardinner" :S osea no se XD que hago? estoy seguro que lo van decir "que me fije que valor esta dando i" ya me fije da 0

Byee Saludos!

Por wawi

325 de clabLevel

2 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 25 Feb 2009 09:56 am
jajjaj bueno esto es lo bueno de un foro, tal ves no te ayudan pero mietras escribis tu problema te vas dando poco a poco cuenta de cosas y cada ves vas conociendo mas el error hasta que finalmente sabes exactamente cuales, para el que le interece: el error es muy simple, pero a la ves muy escondido, cuando yo hago esto dentro del onConnect:

_root.ej[i].send("<getrooms />");

i ya no vale 0, vale i++, porque OnCOnnect no se ejecuta cuando i vale 0, sino cuando el for termina, y el for termina en este caso en 1, entonces yo estaba haciendo esto:

_root.ej[1].send("<getrooms />");
y no esto:
_root.ej[0].send("<getrooms />");

ahora como resolverlo, simple, todas las clases de flash vienen con la propiedad identity, entonces primero identifico con el valor de i mi objeto y despues dentro de la funcion la llamo con un this.identity, asi:

_root.ej[this.identity].send("<getrooms />");

entonces el codigo queda haci:

Código :

var ej:Array = new Array();
ej.push(new XMLSocket());

for(i = 0; i < 1; i++)
{
   ej[i].connect("127.0.0.1", 2468);
   ej[i].identity = i;
   
   ej[i].onConnect = function(exito)
   {
      if(exito)
      {
         trace("Conexion Exitosa");
         ej[this.identity].send("<getrooms />");
      }
      else
      {
         trace("Conexion Erronea");
      }
   }
   
   ej[i].onXML = function(msg)
   {
      trace("Resivimos un mensaje");
      trace(msg);
   }
}



y finalmente darwin hizo la luz :P, bueno que se de por cerrado XD

Byee Saludos!

Por wawi

325 de clabLevel

2 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 25 Feb 2009 11:57 am
Que bueno que lo pudiste resolver, y que bueno que has posteado tu solucion :D es asi como funcionan los foros.

por cierto, ahora que veo tu solcion, no seria mas facil:

Código ActionScript :

var ej:Array = new Array();
ej.push(new XMLSocket());

for(i = 0; i < 1; i++)
{
   ej[i].connect("127.0.0.1", 2468);
   ej[i].identity = i;
   
   ej[i].onConnect = function(exito)
   {
      if(exito)
      {
         trace("Conexion Exitosa");
         this.send("<getrooms />");
      }
      else
      {
         trace("Conexion Erronea");
      }
   }
   
   ej[i].onXML = function(msg)
   {
      trace("Resivimos un mensaje");
      trace(msg);
   }
}


Seguido de que si solo tienes un socket, ¿porque complicarse con el for?

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 25 Feb 2009 12:25 pm
es que en realidad con ese codigo estaba testiando de que si funcionaba, este es el codigo verdadero

Código :

class ServerList
{
   //Constructor
   function ServerList()
   {
      xmlList = new XML();
   }

   
   var sockets:Array = new Array();      //Sockets para actualizar servidores
   var servers:Array = new Array();      //IPs agregadas
   var i:Number = new Number();         //i para for
   var xmlList:XML;                  //Lista de servers, en xml

   
   
   
   //Agrega un servidor a la lista
   function AddServer(ip:String) :Void
   {
      //Si la ip es valida procedo
      if(IsValidIP(ip))
      {
         //Agrego la Ip a la lista y creo un socket para esta conexion
         servers.push(ip);
         sockets.push(new XMLSocket());
      }
   }
   
   //Comprueba si la ip es valida (por ahora siempre true)
   function IsValidIP(ip:String) :Boolean
   {
      return true;
   }
   
   //Actualiza los datos del servidor
   function RefreshServers() :Void
   {
      //Mediate a este se accede desde las funciones a las propiedades de la clase (variabels, metodos, etc);
      var info:Object = new Object();
      info = this;
      
      //Perimite colocar espacios entre etiquetas, sin ella tendriamos que mantener la info toda pegada :S
      xmlList.ignoreWhite = true;
      
      //xmlList = '<noi>geomat</noi>'; //Iniciamos la lista en vacio
      
      //por cada servidor se crea un socket
      for(i = 0; i < servers.length; i++)
      {
         //Conectamos a al servidor
         sockets[i].connect(servers[i], 2468);
         
         //Identifico al objeto con su numero de indice
         sockets[i].identity = i;
         
         trace("Conectando a " + servers[i]);
         //Creamos una funcion de conexion
         sockets[i].onConnect = function(exito)
         {
            //Si se conecta al servidor procedo
            if(exito)
            {
               trace("Conexion Exitosa");
               info.sockets[this.identity].send("<getrooms />");
            }
            //Si no se conecta al servidor procedo
            else
            {
               trace("Conexion Erronea");
            }
         }

         sockets[i].onXML = function(msg)
         {
            trace("Resivimos un mensaje:");
            trace(msg);
         }
      }
   }
}


y en el swf se corre esto:

Código :

import ServerList;

var obj:ServerList = new ServerList();

obj.AddServer("127.0.0.1");
obj.RefreshServers();


por sierto con que etiquetas BB haces para que se vea el codigo en colores ¬¬ yo uso las que dice en el faq :S

Byee Saludos!

Por wawi

325 de clabLevel

2 tutoriales

 

Argentina

firefox
Citar            
MensajeEscrito el 25 Feb 2009 09:23 pm
:P
AS

Código :

[as][/as]

PHP

Código :

[php][/php]

HTML

Código :

[html][/html]

XML

Código :

[xml][/xml]

JAVASCRIPT

Código :

[js][/js]

Por LongeVie

Claber

1741 de clabLevel

1 tutorial

Genero:Masculino  

En un lugar, re moto.

firefox
Citar            
MensajeEscrito el 26 Feb 2009 02:41 am
mira vos no sabiaaaaaa :D Mil gracias!!!!!!!!!!!

Byee Saludos!

Por wawi

325 de clabLevel

2 tutoriales

 

Argentina

firefox

 

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