我在我的机器上安装了FMS 3.5并使用main.asc创建了一个新的应用程序:
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" );
}
这段代码准备了一个我用我的flex应用程序调用的函数,名为“allo”,它在响应中返回相同的byteArray。
flex代码是:
var anotherArray:ByteArray = new ByteArray();
anotherArray.objectEncoding = ObjectEncoding.AMF3;
anotherArray.writeObject(new String("foo"));
nconn.call(func, echoResponder, anotherArray);
结果,我得到一个空的ByteArray只有length,encoding,endian和position参数。并且tcpdump跟踪显示ByteArray为空。
所以我想知道它是否只是一个发送的指针,或者我错误配置了什么。
您是否知道进一步调查或解决此问题的方法?
感谢您的帮助,
MP
答案 0 :(得分:0)
我尝试了你的代码。
发送...
var bytes:ByteArray = new ByteArray();
bytes.objectEncoding = ObjectEncoding.AMF3;
bytes.writeObject(new String("foo"));
nc.call("allo", new Responder(_onResult, _onStatus), bytes);
......并接受......
private function _onResult(result:*):void
{
var bytes:ByteArray = ByteArray(result);
var str:String = String(bytes.readObject());
trace(str);
}
跟踪foo
我认为您的代码没问题。唯一的区别是我使用的是FMS 4.