欢迎来到天天文库
浏览记录
ID:8969215
大小:67.50 KB
页数:7页
时间:2018-04-13
《javascript与flash中的socket编程交互1》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、Javascript与Flash中的Socket编程交互Flash中的简单概念帧——就是影像动画中最小单位的单幅影像画面,相当于电影胶片上的每一格镜头。关键帧——任何动画要表现运动或变化,至少前后要给出两个不同的关键状态,而中间状态的变化和衔接电脑可以自动完成,在Flash中,表示关键状态的帧叫做关键帧。过渡帧——在两个关键帧之间,电脑自动完成过渡画面的帧叫做过渡帧。Flash中的XMLSocket类1.与Socket服务器建立连接调用XMLSocket.connect()方法并监听网络连接的事件消息。该方法有两个参数,host为String类型,值为主机IP或域名,也
2、可以为null,默认为发布该flash的web服务器;port为端口号,没有默认值,最小为1024。如果想突破这个限制需要主机根目录的policy文件。Flash的Socket编程是一个异步的过程,connect方法不会等到一个连接完成后再执行下一代码,因此需要事先准备好一些事件监听器。XMLSocket.onConnect方法用于监听是否成功。Flash在连接到服务器端成功或者失败(包括域认证失败、端口限制或者连接超时以及被服务器主动拒绝等情况)时会给予参数true或者false。请牢记,当与一个主机建立一个Socket连接时,FlashPlayer要遵守如下安全沙箱
3、规则.1.Flash的.swf文件和主机必须严格的在同一个域名,只有这样才可以成功建立连接.2.一个从网上发布的.swf文件是不可以访问本地服务器的.3.本地未通过认证的.swf文件是不可以访问任何网络资源的.4.你想跨域访问或者连接低于1024的端口,必须使用一个跨域策略文件.如果尝试连接未认证的域或者低端口服务,这样就违反了安全沙箱策略,同时会产生一个securityError事件.这些情况都可以通过使用一个跨域策略文件解决.无论是Socket对象还是XMLSocket对象的策略文件,都必须在连接之前通过使用flash.system.Security.loadPol
4、icyFile()方法载入策略文件.具体如下:Security.loadPolicyFile("http://www.rightactionscript.com/crossdomain.xml");获得的改策略文件不仅定义了允许的域名,还定义了端口号.如果你不设置端口号,那么FlashPlayer默认为80端口(HTTP协议默认端口).在标签中可以使用逗号隔开设置多个端口号.下面这个例子就是允许访问80和110端口.5、://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">2.向Socket服务器发送数据XMLSocket.send(String)发送一个字符串,执行时将该数据包发送到服务器。3.从Socket服务器接收数据Flash会从Socket服务器接收数据,在接收到 时认为服务器本次数据发送结束,然后触发XMLSocket.onData定义的6、监听器。4.断开连接主动地断开连接:XMLSocket.close()无论是从客户端主动断开连接还是服务器端主动断开,都会触发socket.onClose定义的监听器。5.flash加载最后,如果有些事情必须等flash加载完成才能做,则要在flash使用ifFrameLoaded("close")定义的监听器再来看这个flash,它没有外观,高度和宽度都被设定为1它有两个层,第一个层定义了全部的监听方法,源代码如下varhost;varport;vardata;varsocket=newXMLSocket();ifFrameLoaded("close"){getURL7、("javascript:SocketOnInit()");//它定义了初始化调用什么js函数}socket.onData=function(src){如果是为firefox使用,在这里需要增加一行src=escape(src);原因可能是AdobeFlash插件在与JS交互时对UTF-8编码理解不同,经调试在FF下使用escape函数可达到IE相同的效果getURL("javascript:SocketOnData('"+src+"')");//它定义了接收到以 结尾的数据时触发的事件,src是它的参数,触发js函数时作为Socket
5、://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">2.向Socket服务器发送数据XMLSocket.send(String)发送一个字符串,执行时将该数据包发送到服务器。3.从Socket服务器接收数据Flash会从Socket服务器接收数据,在接收到 时认为服务器本次数据发送结束,然后触发XMLSocket.onData定义的
6、监听器。4.断开连接主动地断开连接:XMLSocket.close()无论是从客户端主动断开连接还是服务器端主动断开,都会触发socket.onClose定义的监听器。5.flash加载最后,如果有些事情必须等flash加载完成才能做,则要在flash使用ifFrameLoaded("close")定义的监听器再来看这个flash,它没有外观,高度和宽度都被设定为1它有两个层,第一个层定义了全部的监听方法,源代码如下varhost;varport;vardata;varsocket=newXMLSocket();ifFrameLoaded("close"){getURL
7、("javascript:SocketOnInit()");//它定义了初始化调用什么js函数}socket.onData=function(src){如果是为firefox使用,在这里需要增加一行src=escape(src);原因可能是AdobeFlash插件在与JS交互时对UTF-8编码理解不同,经调试在FF下使用escape函数可达到IE相同的效果getURL("javascript:SocketOnData('"+src+"')");//它定义了接收到以 结尾的数据时触发的事件,src是它的参数,触发js函数时作为Socket
此文档下载收益归作者所有