Flex 3.4和FMS 3.5.1 - 在RTMP调用上发送ByteArray时出现问题

时间:2010-08-27 16:04:51

标签: flex bytearray fms3

我在我的机器上安装了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

1 个答案:

答案 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.