2012-06-16 35 views
1

我正在使用Node.JS在服務器端的Flex應用程序,並利用套接字爲我的客戶端提供服務。 問題是:當我從Flashbuilder啓動它時,我的應用程序工作正常,它可以連接到服務器並將數據提供給我的客戶端。但是當我嘗試使用url訪問這個應用程序時,它不起作用。Flex節點套接字連接

匆匆, 工作鏈接: d:\開發\工作區\的Myproj \ BIN調試\ index.html在

不工作環節:(SWF文件加載,但沒有數據) 的http:// IP -address:3000/flexapp/index.html

看起來像一些安全問題。但我不確定,因爲我的思想拒絕提供解決方案。 任何幫助,非常感謝。

進一步探索: 我試過如下在網上給出了很多建議: 首先,我的理解,Socket.io本身爲您提供flashpolicyfileserver在端口10843,仍然我有問題,如上所述。 其次,我嘗試使用authbind運行flashpolicyserver,解釋如下here,但仍然無法解決我的問題。

+0

感謝您的建議。在發佈此查詢之前,我查看/搜索了所有內容。 –

回答

0

好的我正在回答我自己的問題。 我使用的設置是Flex4.6,使用Socket.IO的Node.JS,FlashSocket API

當我遇到此問題時,我通過爲我的應用程序指定crossdomain.xml來正確啓動。但那沒有奏效。然後,我嘗試在端口843上使用單獨的策略服務器,即使這樣做沒有奏效。但是,通過這一切,我發現套接字已被初始化並在稍後斷開連接。所以我最終用Flashsocket引發了這個問題。我拿了源代碼並進行了調試。我發現該政策網址是基於提供給它的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); 
      } 
     } 
+0

我想......那就是我正在做的事情。這個函數指向一個更受限制的位置,在那裏我可以通過一種可以提供一個URL到你的全局策略文件的方式進行修改。謝謝。 –