我正在使用服务器端的Node.JS开发Flex应用程序,并利用套接字为我的客户端提供服务。 问题是:当我从Flashbuilder启动它时,我的应用程序工作正常,它可以连接到服务器并将数据提供给我的客户端。但是当我尝试使用url访问此应用时,它不起作用。
快点, 工作环节: d:\开发\工作空间\的Myproj \ BIN调试\ index.html的不工作链接:( swf加载,但没有数据) http://ip-address:3000/flexapp/index.html
看起来有些安全问题。但我不确定,因为我的思想拒绝提出解决方案。 非常感谢任何帮助。
进一步探索: 我通过网络尝试了很多建议如下: 首先,根据我的理解,Socket.io本身在端口10843为您提供了flashpolicyfileserver,但仍然存在上述问题。 其次,我尝试使用authbind按照here解释运行flashpolicyserver,但仍然无法解决我的问题。
答案 0 :(得分:0)
好的我正在回答我自己的问题。 我使用的设置是Flex4.6,带有Socket.IO的Node.JS,FlashSocket API
当我遇到此问题时,我通过为我的应用指定crossdomain.xml来正确启动。但这没效果。然后我尝试在端口843使用单独的策略服务器,即使没有用。但总而言之,我发现套接字已经初始化并在以后断开连接。所以我最终使用Flashsocket导致了这个问题。我拿了源代码并进行了调试。我发现策略URL是基于提供给它的ip +主机生成的。这是一种很好的方法,但它没有提供任何方法来自定义此策略URL。 我所做的只是修改,以便我可以传递自己的policyURL,无论何时传递,Flashsocket应该使用它,否则,它继续以旧方式执行policyURL。它奏效了。
我对FlashSocket的一些小改动:
....
private var policyURL:String;
public function FlashSocket( domain:String, protocol:String=null, proxyHost:String = null, proxyPort:int = 0, headers:String = null, policyURL:String = null)
{
....
this.policyURL = policyURL;
....
}
protected function loadDefaultPolicyFile(wsUrl:String):void {
var policyUrl:String = "xmlsocket://" + URLUtil.getServerName(wsUrl) + ":843";
log("policy file: " + policyUrl);
if(policyURL){
Security.loadPolicyFile(policyURL);
}else}
Security.loadPolicyFile(policyUrl);
}
}