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

发布于 2024-09-16 10:22:50 字数 1192 浏览 3 评论 0原文

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

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

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

感谢您的帮助,


国会议员

I installed a FMS 3.5 on my machine and created a new application with main.asc like this :

    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" );
}

This code prepare a function I call with my flex application, named "allo" and it returns the same byteArray in response.

The flex code is :

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

As a result, I get an empty ByteArray with only length,encoding, endian and position parameters. And a tcpdump trace shows that the ByteArray is empty.

So I wonder if it's only a pointer which is sent, or maybe I misconfigured something.

Do you know a way to investigate further or solve this ?

Thanks for any help,


MP

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

双手揣兜 2024-09-23 10:22:50

我试过你的代码。

发送...

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。

I tried your code.

Sending...

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

... and receiving...

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

traces foo

I think your code is OK. Only difference is that I use FMS 4.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文