2010-08-27 14 views
1

J'ai installé un FMS 3.5 sur ma machine et créé une nouvelle application avec main.asc comme ceci:Flex 3.4 et FMS 3.5.1 - Problème d'envoi ByteArray sur RTMP appel

application.onAppStart = function() 
{ 
    /* Allow debugging */ 
    this.allowDebug = true; 
} 

//Client is connected 
application.onConnect = function(client) 
{ 

    //Accept the connection 
    application.acceptConnection(client); 

    client.allo = function(o) { 
     trace("test : " + o) ; 
     trace("length : " + o.length) ; 
     trace("objectEncoding : " + o.objectEncoding) ; 
     return o ; 
    } 

} 

//Client disconnected 
application.onDisconnect = function(client) 
{ 
    //Trace on the FMS Application console 
    trace(client+" is disconnected"); 
} 

Ce code préparer une fonction I appel avec mon application flex, nommé "allo" et il retourne le même byteArray en réponse.

Le code Flex est:

var anotherArray:ByteArray = new ByteArray(); 
       anotherArray.objectEncoding = ObjectEncoding.AMF3; 
       anotherArray.writeObject(new String("foo")); 
       nconn.call(func, echoResponder, anotherArray); 

En conséquence, je reçois un ByteArray vide avec seulement la longueur, le codage, les paramètres et la position endian. Et une trace tcpdump montre que ByteArray est vide. Donc, je me demande si c'est seulement un pointeur qui est envoyé, ou peut-être que j'ai mal configuré quelque chose.

Savez-vous un moyen d'approfondir ou de résoudre ce problème?

Merci pour toute aide,


MP

Répondre

0

j'ai essayé votre code.

Envoi en cours ...

var bytes:ByteArray = new ByteArray();      
bytes.objectEncoding = ObjectEncoding.AMF3;     
bytes.writeObject(new String("foo"));      
nc.call("allo", new Responder(_onResult, _onStatus), bytes); 

... et de réception ...

private function _onResult(result:*):void   
{ 
    var bytes:ByteArray = ByteArray(result);  
    var str:String = String(bytes.readObject()); 
    trace(str);         
} 

traces foo

Je pense que votre code est OK. La seule différence est que j'utilise FMS 4.