【问题标题】:Can I SEND messages via the underlying NetConnection of a receiving (playing) NetStream object?我可以通过接收(播放)NetStream 对象的底层 NetConnection 发送消息吗?
【发布时间】:2010-08-21 19:53:20
【问题描述】:

这是我的问题:我有一个连接到服务器的 NetConnection 对象。在顶部,我创建了一个 NetStream 对象,它开始播放来自服务器的文件。经典至今。

我现在需要的是能够在播放时间的不同时刻将一些(短)消息发送回服务器,但很明显,使用现有的 TCP 连接

从我在the docs 中可以看到,底层的 NetConnection 对象支持“客户端和服务器之间的双向连接”,显然 TCP 层支持它。我非常了解 TCP 网络概念,但绝对不了解 Flash 如何实现它们。

  1. 这是正确的吗?是否可以使用 NetConnection(或其他一些机制)来完成?

  2. 我将如何做这件事(一个例子很好,但对过程的概念性描述也可以)。如何通过 NetConnection 将消息从客户端发送到服务器?

  3. 活动的 NetStream 对象是否会以任何方式干扰此类操作?

谢谢。

【问题讨论】:

    标签: flash actionscript-3 bidirectional netstream netconnection


    【解决方案1】:

    是的,你可以。

    我假设,我们正在讨论与 Flash 媒体服务器的连接。

    使用远程执行服务器端脚本方法的 NetConnection.call() 方法。

    public function call(command:String, responder:Responder, ... arguments):void
    

    您必须将此服务器端方法定义为连接客户端类的原型

    例如

    Client.prototype.MyMethod = function(arg)
    {
    trace("Server received " + arg + "\n");
    }
    

    那么调用这个方法应该是这样的:

    var nc:NetConnection;
    
    //initialize net connection and connect
    
    nc.call("MyMethod", null, "Hello, server");
    

    如果你需要得到一些结果 - 使用 Responder 类实例而不是 null。

    如果您需要服务器调用客户端的方法,请在客户端对象上使用服务器端“调用”函数。 在这种情况下,您必须在客户端定义一些对象,该对象具有回调方法:

    客户端:

    var obj = new Object();
    obj.MyCallback = function(arg:Object)
    {
    trace ("Received message from server: " + arg as String);
    }
    nc.client = obj;
    

    服务器端:

    clientObject.call("MyCallback", null, "Hello, client");
    

    问候, 大卫。

    【讨论】:

    • 其实我不会使用 Flash Media Server,我想我应该更明确一点,但是如果 Flash 客户端支持调用,我认为服务器可以是任何 AMF 实现(例如 AMFPHP )。对吗?
    • 我猜你是对的。在客户端,一切看起来都一样。在服务器端实现可能会有所不同。 (以红5服务器为例)
    猜你喜欢
    • 2013-04-04
    • 2012-07-07
    • 2015-11-17
    • 2014-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-16
    相关资源
    最近更新 更多