客户端服务器通信的方式

时间:2011-03-26 19:56:05

标签: flash actionscript-3 actionscript-2

向/从服务器端数据源发送/加载数据的可能方式有多少,以及使用每种方法的条件是什么。

2 个答案:

答案 0 :(得分:2)

对于简单的沟通,有三种常见的方式:

LoadVar(AS2)/ URLLoader(AS3)

这是Flash历史上第一个使用HTTP从服务器检索数据的方法。

例如:

//params.txt is a local file that includes: firstName=Tom&lastName=Jones
var lbl:TextField = new TextField();
var urlRequest:URLRequest = new URLRequest("params.txt");
var urlLoader:URLLoader = new URLLoader();
urlLoader.dataFormat = URLLoaderDataFormat.VARIABLES;
urlLoader.addEventListener(Event.COMPLETE, urlLoader_complete);
urlLoader.load(urlRequest);

function urlLoader_complete(evt:Event):void {
    lbl.text = urlLoader.data.lastName + "," + urlLoader.data.firstName;
    addChild(lbl);
}

从Flash读取速度非常快,但是服务器端并不是那么简单,因为语法非常适合Flash。在处理复杂对象时,它变得非常糟糕。 如果您必须将一些数据发送到服务器,您可以将它们作为GET参数放在网址中,或使用URLVariables,这与URLLoader.data非常相似。

XML

人类容易阅读,服务器端存在许多库。在AS3中,E4X语法使得它比以前的AS2更容易解析。无论如何,它对手动数据很有用,对动态数据不太容易使用。主要问题仍然存在

  

这是浪费大量时间;浪费了大量资源,弄清楚要使用什么模式,在服务器和客户端上实现代码,以及调试。所有这些都是为了在服务器上构建一些你在客户端立即销毁的东西。

这句话来自AMFPHP,这是......第三种方式!

AMFPHP(现为Zend AMF)

这是通过Flash与服务器通信的最佳方式(通过简单方式)。通过webservices进行通信。 Flash实现本机存在(请查看NetConnection)。服务器端,AMF [您使用服务器端的任何语言]将允许您使用您键入的对象并将它们直接发送到闪存而无需任何手动转换。您也可以从Flash发送一些数据而不转换它,您将在服务器上找到一个类型化的对象。这非常理想。


总结一下: URLLoader 是好的,如果你说3个变量(对于非常小的项目)。当您拥有大量静态数据(配置文件)时, XML 是完美的。当您处理注入动态数据的服务器(来自数据库)时, AMF 非常理想。

答案 1 :(得分:0)

HTTP:这是URLLoader为您提供的。您可以发出Web服务器的HTTP请求,并返回结果。请求可以像获取文本文件一样简单,就像调用服务器端脚本(PHP,ASP,Python等)一样复杂,并获取可以通过HTTP发送的任何内容。

XMLSocket:您可以使用XMLSocket类与您选择的端口上的服务器建立直接的TCP / IP连接,并通过持久连接直接与XML通信。

套接字:套接字类的工作原理与XMLSocket相同,但适用于TCP / IP上的原始二进制数据。 Socket类为您提供了许多辅助函数,用于将数据解释为常见数据类型,以及将原始数据作为ByteArray获取的功能。你可以用这种方式发送任何你想要的东西。

此时Flash不支持(据我所知)是对UDP的完全内置支持。这通常用于低延迟的P2P游戏,我听说它正在开发中,部分支持Flash Player 10测试版,但我还没有调查过。