返回首页当前位置:首页 >> 网站建设 >> 正文

flash中通过XMLSocket监控生产系统2

文章来自: | 发表时间:2008-1-5 21:05:38

flash中通过XMLSocket监控生产系统2

二、技术介绍

1、XML 对象

  通过使用该对象实例的方法与属性,可以加载、解析、发送、构造、和维护XML文档树。
令人激动的是,在Flash的最新版本Flash MX中,XML 对象已经成为一个本地对象,即在FlashPlayer 6中内置对其的直接支持(Flash Player 5只有300多KB,而Flash Player 6却有800 KB,内置许多对象是相当大的原因。),因此,动态性能得到了极大的提高。

  在使用XML 对象之前,必须通过其构造函数,生成一个对象实例,然后通过使用其方法和属性,对XML文档树进行操作。XML 对象有两种构造函数:

1) new XML(src)

  其中参数src 必须是格式正确的XML文本,以下语句先通过传进来的XML文本生成一个XML对象实例,将把两个非静态文字(TextField对象)实例nameTextField和passwordTextField的内容分别设为“Morgan”和“loveme”如:

myXML = new XML(””);
nameTextField.text = myLogin.attributes.username ;
passwordTextField.text = myLogin.attributes.password ;


2) new XML()

  生成一个空的XML对象实例,然后调用其相应的方法如load()、createElement()、 createTextNode()、cloneNode()、appendChild()等方法构造或加载XML文挡树,具体的用法可以参考Flash在线帮助,由于本文的重点在于使用Flash的socket(套接字)连接,所以关于XML对象的基于HTTP协议的send()、load()、sendAndLoad()等方法就不做介绍,对于如何构造XML文挡树请参见下文。

二、技术介绍

2、XMLSocket 对象

  实现了客户端socket(套接字),允许包含Flash应用的浏览器与服务端建立socket连接,之后Flash应用与服务端就可以相互发送XML数据,而且在一个socket连接建立之后,在该连接上传送的数据量是没有限制的,直到socket连接关闭。

使用XMLSocket 对象时,必须要注意两点:

o 在socket连接上发送的XML数据,每条数据以一个0字节隔开,详见下面服务端的建立。
o Flash 应用所连接的主机必须是与相应Web服务器在同一IP地址或是同一子域。所谓同一子域是指在同一域名空间中,例如包含Flash应用的网页是从mail.real-ok.com下载的,则name.mail.real-ok.com就是子域,就允许建立连接,而real-ok.com不是子域,Flash的安全规则就不允许建立连接。

使用XMLSocket 对象的流程为:

1) 建立一个XMLSocket 对象

mySocket = new XMLSocket();

2) 对生成的XMLSocket 对象进行设置

mySocket.onConnect = myOnConnect;
mySocket.onData = myOnData;
mySocket.onXML = myOnXML;
mySocket.onClose = myOnClose;


  以上四条语句,分别设置了mySocket的四个事件处理函数,其中,myOnConnect、myOnData、myOnXML分别是带有一个参数的函数,myOnClose不带参数,当发生相应的事件时,就调用相应的处理函数。

3) 使用XMLSocket 对象的connect方法,建立与服务端的连接mySocket.connect(null, 6666);

  其中,connect方法有两个参数,第一个参数表示要连接的主机,可以是全限定的域名和者IP地址,需要注意一点:当使用IP地址时,如 127.0.0.1 需要把它当作字符串来处理,即要用引号把IP地址括起来。如果为null,则连接Web服务器(从该Web服务器下载了包含当前Flash应用的网页)所在的IP地址。

  第二个参数表示要连接的端口,由于低于1024的端口被通用程序所占,Flash的安全规则不允许在低于1024的端口建立连接。connect方法返回布尔型变量true或false,表示连接是否成功。如:

if (!mySocket.connect(null, 2000)) {
myTextField.text = “连接失败!”;
}


  以上语句中,如果连接失败,connect方法返回flase,则把myTextField(为一非静态文字TextField对象的实例)的内容设为“连接失败!”。

  XMLSocket对象与服务端进行连接将触发onConnect事件,则相应的事件处理函数(见上面流程步骤2中的设置)myOnConnect,其中的参数与connect方法的返回值意义相同,详见下面的客户端实例。