Comunidad de diseño web y desarrollo en internet online

Chat con FMS

Citar            
MensajeEscrito el 20 Abr 2010 03:19 pm
Hola a todos, estoy intentando hacer un chat con FMS 3.5 y Flash AS3, estoy en el siguiente punto:
Se me conecta perfectamente con el servidor, pero me da el siguiente error cuando llamo a la función msgFromSrvr() -->
ReferenceError: Error #1069: Property msgFromSrvr not found on Chat and there is no default value.
Error #2044: Unhandled AsyncErrorEvent:. text=Error #2095: flash.net.SharedObject was unable to invoke callback msgFromSrvr. error=ReferenceError: Error #1069: Property msgFromSrvr not found on Chat and there is no default value.

Les dejo el código por si les puede ayudar:
Clase Chat.as:

Código ActionScript :


package  
{
   import flash.display.MovieClip;
   import flash.events.MouseEvent;
   import flash.events.NetStatusEvent;
   import flash.events.StatusEvent;
   import flash.events.SyncEvent;
   import flash.events.TimerEvent;
   import flash.net.NetConnection;
   import flash.net.ObjectEncoding;
   import flash.net.SharedObject;
   import flash.utils.Timer;
   
   public class Chat extends MovieClip
   {
      private var _father:MovieClip;
      private var _chat_mc:MovieClip;
      
      private var nc:NetConnection;
      private var ro:SharedObject;
      
      private var _userName:String;
      private var _sUserNames:String;
      private var _sAllUsers:String;
      
      private var _firstMsg:String;
      private var _auxMsg:String;
      
      private var _serverPath:String = "rtmpt://localhost:82/SOSample/";
      private var _chatChannel:String = "0";
      
      NetConnection.defaultObjectEncoding = ObjectEncoding.AMF0;
      SharedObject.defaultObjectEncoding = ObjectEncoding.AMF0;
      
      public function Chat(father:MovieClip) 
      {
         init("myName");
      }
      public function init(userName:String):void {
         _userName = userName;
         
         _chat_mc = new chat_mc();
         _chat_mc.userName_lbl.text = _userName;
         _chat_mc.send_btn.label = "Enviar";
         _chat_mc.userList_lbl.text = "Usuarios conectados";
         _chat_mc.conect_btn.label = "Conectar";
         _chat_mc.disconect_btn.label = "Desconectar";
         _chat_mc.minimize_cb.label = "Minimizar";
         
         _chat_mc.chatBody.text = "";
         
         _chat_mc.conect_btn.visible = false;
         
         addChild(_chat_mc);
         
         createConnection();
         listeners();
      }
      private function listeners():void {
         _chat_mc.send_btn.addEventListener(MouseEvent.CLICK, sendMessage);
         _chat_mc.minimize_cb.addEventListener(MouseEvent.CLICK, minimizeHandler);
         
      }
      
      private function createConnection():void {
         //Connect to Server
         nc = new NetConnection();
         nc.addEventListener(NetStatusEvent.NET_STATUS, netStatus);
         nc.connect(_serverPath + _chatChannel, _userName);
         nc.client = this;
      }
      private function netStatus(e:NetStatusEvent):void {
         if (e.info.code != "NetConnection.Connect.Success") {
            _chat_mc.chatBody.text = "No se ha podido realizar la conexión\n";
         }else {
            ro = SharedObject.getRemote("ChatUsers", nc.uri);
            if (ro) {
               ro.addEventListener(SyncEvent.SYNC, OnSync);
               ro.connect(nc);
               ro.client = this;
            }
         }
      }
      private function OnSync(e:SyncEvent):void {
         trace("sync "+e.target.data);
         
      }
      private function sendMessage(e:MouseEvent):void {
         if (_chat_mc.message.text != "") {
            nc.call("msgFromClient", null, _chat_mc.message.text);
            _chat_mc.message.text = "";
         }
      }
      private function msgFromSrvr(msg:String):void {
         trace("msgFromSrvr");
         writeMessage(msg);
      }
      private function writeMessage(msg:String):void {
         _chat_mc.chatBody.text += msg;
      }
}
// y el main.asc
application.onAppStart = function()
{
   application.users_so = SharedObject.get("ChatUsers");
   application.history = "";
   application.nextId = 0;
}

application.onConnect = function(newClient, userName)
{
   trace("conectem l'usuari: "+userName);
   newClient.name = userName;
   
   newClient.id = "u" + application.nextId++;
   
   application.users_so.setProperty(newClient.name, userName);
   
   application.acceptConnection(newClient);
   
   //newClient.call("setHistory", null, application.history);

   newClient.msgFromClient = function(msg) {   
      msg = userName + ": " + msg + "\n";
      trace("msgFromClient "+msg);
      application.users_so.send("msgFromSrvr", msg);
   }
}

application.onDisconnect = function(client)
{
   trace("disconnect: " + client.name);
   application.users_so.setProperty(client.name, null);
}



Alguna idea?
Muchas gracias por su tiempo
Manel Pi

Por manel.pi

71 de clabLevel



 

chrome
Citar            
MensajeEscrito el 20 Abr 2010 08:19 pm
Haz público el método msgFromSrvr

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 21 Abr 2010 07:00 am
Siempre lo más evidente es la respuesta ...
Muchas gracias Jorge

Por manel.pi

71 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Ene 2012 10:54 am
Hola, he visto este post y tengo una duda. Por lo que he visto, tanto en la clase "Chat" com en el "main.asc", haceis que se conecte al Remote Shared Object(RSO) "ChatUsers", pero y si yo necesito que se conecte dinámicamente a un RSO u otro? En la clase "Chat" es fácil, se le pasa por parámetro y listos, pero como lo hago para pasárselo al "main.asc"?

Alguna idea? Me sería de gran ayuda.
Muchas gracias

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Ene 2012 11:39 am
Puedes pasarle parámetros a cualquier script de servidor, por ejemplo en esta llamada el tercer argumento es un parámetro:

nc.call("msgFromClient", null, _chat_mc.message.text);

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Ene 2012 11:43 am
Hola Jorge, creo que me he explicado mal.
Mi duda es la siguiente, en este trozo de código la aplicación se conecta al SO "ChatUsers", pero yo quisiera que se conectara a un SO u otro según algun parámetro que se mande.
De tal forma que pueda tener varios chats, por ejemplo, y el que esté conectado a un chat no vea lo que se está escribiendo en el chat de la habitación de al lado.
Me he explicado?

Código ActionScript :

application.onAppStart = function()
{
   application.users_so = SharedObject.get("ChatUsers");
   application.history = "";
   application.nextId = 0;
}


Muchas gracias

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Ene 2012 12:17 pm
Lo primero que debes definir es la lógica de las salas. ¿Cuantas salas hay, bajo que condiciones se crean, como se conecta el usuario? Por ejemplo si hay un máximo de 10 usuarios por sala, al conectarse un cliente (onConnect) verifico cuantos usuarios copnectados tiene el SO, si tiene mas de diez, creo uno nuevo y lo seteo como la sala activa, etc. Los chats mas elaborados usualmente tienen una aplicación Lobby que luego se va conectando (o incluso creando) a distintas salas, ya que una aplicación puede ser cliente de otro, no solamente los usuarios externos pueden ser clientes

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 30 Ene 2012 02:29 pm
Hola Jorge, entonces yo necesito un Lobby y que cuando uno entre al chat que ha escogido en el Lobby, en el onAppStart del main.asc reciba a que SharedObject se ha conectado y en caso de no existir lo cree.
Sabes como se hace esto? Conoces algun tutorial o ejemplo?

Muchas gracias

Por Palacio

Claber

198 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Ene 2012 02:40 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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