刚用AS3 & Flash Play 10开发了一个Flash Socket应用,过程中遇到的最大问题是安全策略的部署。
参考了一下文章:
Flash socket通讯中的安全策略问题详解
http://www.cnblogs.com/asbeforelong/archive/2009/03/02/1401284.html
套接字策略
http://help.adobe.com/zh_CN/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7c60.html
Adobe ActionScript 3.0 * 安全沙箱
http://help.adobe.com/zh_CN/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e3f.html
在调用Flash Socket的 socket.connect() 方法时,Flash Play会通过SOCKET链接到被访问服务器的843端口,并向该链接发送“<policy-file-request/>/0”字符串,然后等待服务器返回。需要注意的是‘/0’!!!
所以,我们所需要做的事情就是,自己写一个程序,侦听843端口,当有人链接该端口,并受到“<policy-file-request/>/0”字符串时,将我们的策略文件以字符串的形式返回给该客户端。策略文件格式如下:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.adobe.com/xml/dtds/cross-domain-policy.dtd">
<!-- Policy file for xmlsocket://socks.mysite.com -->
<cross-domain-policy>
<allow-access-from domain="*" to-ports="55555" />
</cross-domain-policy>
需要注意的是,策略内容字符串最后要加上‘/0’字符!!!!