2014-11-20 82 views
3

服務政策文件,我創建了推動上市細節連接的客戶端一個Socket.IO服務器。在瀏覽器中,通過HTTP,一切都按照預期使用Web套接字工作,但是其中一種會使用服務的客戶端類型完全是Flash(不是套接字後備,只是直接用於Flash)。我們正在使用AS3 Web Socket Client庫。如何從Socket.IO/Node.js

當Flash客戶端(由另一個團隊構建)試圖連接到服務器時,它才獲得了安全沙箱衝突。我知道這與來自Socket.IO服務器的策略文件服務有關,但我完全不知道如何提供此文件。當我telnet 127.0.0.1 10843telnet 127.0.0.1 843我沒有得到任何迴應。如果我記得,在過去的項目中,我們已經能夠telnet到策略文件服務器來獲得響應。這對於幫助我確認它正在服務是理想的。

據我所知,默認端口是10843,而自己也嘗試設置爲843

這是我有:3000個

  • 瀏覽器客戶端可以連接:在本地主機上運行

    • 推送服務並加入渠道沒有問題
    • 我有一個crossdomain.xml文件在根目錄(不知道這是否需要或不)

    我有關政策文件中的以下設置:

    // Socket Setup 
    io.set('transports', ['websocket','flashsocket']); 
    io.set('flashPolicyServer', true); 
    io.set('flash policy port', 843); 
    

    旁白(也許),使用這些設置,我也開始在服務得到一個錯誤(儘管它仍然啓動):

    Option flashPolicyServer is not valid. Please refer to the README. 
    Option flash policy port is not valid. Please refer to the README. 
    

    我不知所措。希望不是重複的;我搜索了高低,並相信我錯過了一些小事。任何建議?

  • +0

    嘗試[FlashSocket.io(https://github.com/simb/FlashSocket.IO)。我沒有使用它,但它看起來像你需要什麼,因爲自1.0發佈以來不支持Flash。我已經更新了我的答案以反映這一點。 – enolam 2014-11-21 18:28:39

    回答

    0

    根據socket.io documentationflash policy server默認爲true當啓用閃存傳輸。這意味着flashPolicyServer(應該是flash policy server)選項是不必要的。在設置傳輸之前嘗試設置端口......就像這樣。

    io.set('flash policy port', 843); 
    io.set('transports', [ 'websocket', 'flashsocket' ]) 
    

    這保證了當閃光燈插座服務器啓動時,它開始與該端口,而不是開始,得到殺害,然後用新的端口重新啓動。另外,由於843是一個根端口,因此請確保它有權使用該端口。

    編輯 看起來好像socket.io徹底放棄了對flash的支持。他們的github上的文檔是0.9.0。這是令人困惑的。有一個替代方案可能有用,雖然我沒有嘗試過。 FlashSocket.io應該有助於您的需求。

    +0

    嘗試了所有這些建議,但沒有運氣。我以管理員身份運行cmd以啓動節點服務,按照您的建議重新安排線路(並嘗試將端口843刪除爲默認值10843)。仍然沒有運氣。我是否錯過了NPM軟件包或什麼?即使使用「閃存策略端口」選項,我仍然收到錯誤「選項閃存策略端口無效。請參閱自述文件.' – trnelson 2014-11-21 12:08:33

    +0

    我知道事情隨着1.0而改變,但是如果他們更改了閃存策略服務器,則沒有記錄。 – enolam 2014-11-21 12:12:26

    +0

    嗯,根據modules文件夾中的package.json文件,我有版本1.1.0。似乎這個策略文件並不需要額外的軟件包。我的理解是否正確? – trnelson 2014-11-21 12:53:43

    2

    看來,Socket.IO開發商決定擺脫某些傳輸,因而自1.0沒有閃光燈運輸保障。這有點令人困惑,因爲在新文檔中根本沒有提及Flash傳輸的存在。

    插座。IO 0.9您可以在socket.io文件夾內的某處找到WebSocketMain.swfWebSocketMainInsecure.swf文件。在1.*中沒有任何帶.swf擴展名的文件。

    所以如果你需要Flash的支持,你應該用這個命令安裝Socket.IO 0.9

    npm install [email protected] 
    
    +0

    所以我不確定我理解。他們徹底放棄了Flash的支持?根本不支持Flash客戶端? – trnelson 2014-11-21 16:15:22

    +1

    @trnelson是的,沒有官方確認它,但探討了Socket.IO 1. *源代碼說明這是真的。但是您可以安裝0.9與Flash傳輸支持。 – Curious 2014-11-21 16:43:34

    +0

    抱歉,要解決這個問題,但是如果我可以處理服務策略文件,是否仍然可以在Socket.IO中使用Flash?我不太熟悉確切的細節,但似乎可能是這樣。有任何想法嗎? – trnelson 2014-11-24 02:21:08