Comunidad de diseño web y desarrollo en internet online

Problema con Red5 y AS3

Citar            
MensajeEscrito el 25 Nov 2010 08:38 am
Hola a todos, espero que me puedan ayudar con mi problema.
Estoy trabajando con Flash CS4, AS3 y es para una aplicación en AIR.

La cuestión es que necesito hacer con RED5 un chat, esto en AS2 no sería problema ya que hay un montón de ejemplos. Pero al ser una aplicación AIR, tengo que hacerla en AS3.
El problema surge en la siguiente instrucción:

Código ActionScript :

so["newMessage"] = Delegate.create(this, newMessageHandler);

Ya que me dice: "Error #1056: Cannot create property newMessage on flash.net.SharedObject"

Para más inri, si al chat que estoy desarrollando en AS3, le digo que se conecte al mismo canal que uno hecho en AS2, cuando escribo algo en el hecho en AS2, me salta un error en el que estoy desarrollando, el error es el siguiente: "Error #2044: Unhandled AsyncErrorEvent:. text=Error #2095: flash.net.SharedObject was unable to invoke callback newMessage. error=ReferenceError: Error #1069: Property newMessage not found on flash.net.SharedObject and there is no default value.". Por lo que entiendo, primero no me lo deja declara (y comento la linea), y después me dice que lo necesita verdad?

Alguien puede decirme como hacer un chat en AS3 y RED5? o donde hay algun ejemplo/tutorial?

Muchas gracias
Palacio

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Nov 2010 02:04 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 25 Nov 2010 02:11 pm
Muchas gracias Jorge

Palacio

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Nov 2010 08:56 am
Sólo una última cosa, que no sé si es posible. Tengo un chat con Red5 desarrollado en AS2, puedo hacer que se comunique con otro chat desarrolado en AS3?

En AS2 hago lo siguiente:

Código ActionScript :

import org.red5.utils.Delegate;
import com.gskinner.events.GDispatcher;

class GlobalObject {
   public function GlobalObject() {
     super();
     so = SharedObject.getRemote("3", "rtmp://localhost:1935/fitcDemo", false); 
     so["newMessage"] = Delegate.create(this, newMessageHandler);
     so.onSync = Delegate.create(this, onStatus);
   }   
   public function sendMessage(p_message:String):Void{
     so.send("newMessage", p_message);
   }
   private function controlMessageHandler(p_message):Void{
     chat_txt.text += p_message;
   }
   private function onStatus(evtObj):Void{
      // an update has been recieved, send out to the concerned parties
   }
}


Y en el Chat AS3, tal y como me muestra el ejemplo que me ha linkado Jorge:

Código ActionScript :

    private function doconnect():void {
      if(!nc){
   nc = new NetConnection();
   // set the encoding to AMF0 - still waiting for AMF3 to be implemented on Red5
   nc.objectEncoding = ObjectEncoding.AMF0;
   nc.addEventListener(NetStatusEvent.NET_STATUS,onConnectHandler);
   nc.addEventListener(SecurityErrorEvent.SECURITY_ERROR,onConnectErrorHandler);
   nc.client = this;
   nc.connect("rtmp://localhost:1935/fitcDemo");               
   con_btn.label = "Exit";
      }
     }
     private function sendText():void {
         so.setProperty("newMessage", msj_txt.text);
     }
     private function newMessageHandler(event:SyncEvent):void {
       if(so.data[chatname] != undefined) {
   chat_txt.text += so.data["newMessage"]+"\n";
       }
       msj_txt.text = "";
      }
     private function onConnectHandler(event:Event):void {
       connected = nc.connected;            
       so = SharedObject.getRemote("3", "rtmp://localhost:1935/fitcDemo", false);
       so.addEventListener(SyncEvent.SYNC,newMessageHandler);
       so.client = this;
       so.connect(nc);
    }

El tema es que cuando escribo algo en el chat hecho en AS2, veo lo escrito en ese chat, pero no en el hecho en AS3, y viceversa. No sé si me estoy dejando algo, o alguna referencia está mal puesta, o no se pueden comunicar (aunque no lo creo).
Si alguien ppuede hecharme un cable se lo agradeceré.

Muchas gracias
Palacio

pd.:Creo que el trozo de código que he adjuntado es suficiente, si alguien cree que necesita alguna función más que lo diga y se la adjunto sin problemas.

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 26 Nov 2010 10:55 am
Ambos se conectan a la misma aplicaci{on y trabajan en el onSync del mismo SO, con lo cual deberían verse

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 Dic 2010 08:55 am
Hola de nuevo, siento insistir en el tema, pero llevo varias semanas con esto y no consigo resultados.
Les dejo el trozo de código en AS3 que me da problemas:

Código ActionScript :

import flash.events.SyncEvent;
import flash.net.NetConnection;
import flash.net.SharedObject;

public function connect(p_soName:String, p_nc:NetConnection, p_persistant:Boolean):Boolean
{
   // store Connection reference
   nc = p_nc;
   soName = p_soName;
   // create StoredObject
   so = SharedObject.getRemote(p_soName, nc.uri, p_persistant); 
   so.setProperty("newMessage");
   // setup the onSync events
   so.addEventListener(SyncEvent.SYNC, onSync);
   // connect to the SO
   var goodURI = so.connect(nc);
   return !goodURI;
}
private function onSync(evtObj):void
{
   // an update has been recieved, send out to the concerned parties
   trace("onSync");
   if (so.data["newMessage"] != undefined)
   {
      trace(so.data["newMessage"]);
   }
}   


Y en AS2 tengo el mismo código que pueden ver más arriba. Cuando desde el Chat en AS2 escribo algo, en el chat AS3 me da el siguiente error:

"ReferenceError: Error #1069: Property newMessage not found on flash.net.SharedObject and there is no default value. Error #2044: Unhandled AsyncErrorEvent:. text=Error #2095: flash.net.SharedObject was unable to invoke callback newMessage. error=ReferenceError: Error #1069: Property newMessage not found on flash.net.SharedObject and there is no default value."

Alguna idea?
Como pueden ver en los comentarios anteriores, ambos Chats se conectan al mismo Shared Object.

Muchas gracias

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Dic 2010 08:59 am
Al copiar las funciones he tenido un lapsus y he puesto la función OnSync como "private", pero realmente la tengo como una función "public".

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Dic 2010 12:42 pm
En AS3 el cliente tiene que ser el scope de las llamadas del SO

so.client = this;

Entonces cuando se ejecuta Server Side algo así:

Código ActionScript :

this.message_so.send( "newMessage", msg );


En el cliente se recibe así:

Código ActionScript :

public function newMessage(msg:String):void
{
    outputTf.text += msg+”\n”;
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 Dic 2010 01:23 pm
Muchas gracias Jorge!!!
Sólo me faltaba el "so.client = this;", el resto lo tenía ya todo implementado.
Muchas gracias de nievo
Palacio

Por Palacio

Claber

198 de clabLevel



 

firefox

 

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