1

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

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

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

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

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

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

谢谢。

4

1 回答 1

2

是的你可以。

我假设,我们正在讨论与 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");

问候,大卫。

于 2010-08-24T20:39:40.203 回答