1

我在我的机器上安装了 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 作为响应。

弹性代码是:

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

结果,我得到了一个只有长度、编码、字节序和位置参数的空 ByteArray。并且 tcpdump 跟踪显示 ByteArray 是空的。

所以我想知道它是否只是一个发送的指针,或者我配置错误。

您知道进一步调查或解决此问题的方法吗?

谢谢你的帮助,


国会议员

4

1 回答 1

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。

于 2011-05-12T22:52:52.377 回答