Flex节点套接字连接

时间:2012-06-16 12:41:32

标签: flash flex sockets

我正在使用服务器端的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,但仍然无法解决我的问题。

1 个答案:

答案 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);
            }
        }