我可以通过接收(播放)NetStream对象的基础NetConnection发送消息吗?

时间:2010-08-21 19:53:20

标签: flash actionscript-3 bidirectional netstream netconnection

这是我的问题:我有一个连接到服务器的NetConnection对象。最重要的是,我创建了一个NetStream对象,它开始从服务器播放文件。经典到目前为止。

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

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

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

  2. 我将如何做到这一点(一个例子会很棒,但对过程的概念性描述也会起作用)。我究竟如何通过NetConnection从客户端向服务器发送消息?

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

  4. 感谢。

1 个答案:

答案 0 :(得分:2)

是的,你可以。

我认为,我们正在谈论与Flash媒体服务器的连接。

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

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

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

的原型

e.g。

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

此致 大卫。