2012-04-06 13 views
2

私はsocket.ioで動作するflashsocketを取得しようとしていますが、常にxhr-pollling fallbackで動作しません。socketioとnodejsでflashsocketが動作しない

誰かが助けてくれれば、私が間違っていることは私には分かりません。サーバ側で

var app = express.createServer(), 
io = require('socket.io').listen(app, { 
    flashPolicyServer: true, 
    transports: ['flashsocket', 'htmlfile', 'xhr-polling', 'jsonp-polling'] 
}); 
app.listen(80); 

クライアント側オン:

... 
<script src="/socket.io/socket.io.js"></script> 
... 
      socket = io.connect(); 

      socket.on('connect', function(evt) { 
       console.log(socket.socket.transport.name); 

       onOpen(timeDifference(new Date(), earlierDate), socket.socket.transport.name); 
       earlierDate = new Date(); 
       socket.on('disconnect', function(evt) { 
        onClose(evt); 
       }); 
       socket.on('echo', function(msg) { 
        onEcho(msg); 
       }); 
       socket.on('error', function(evt) { 
        onError(evt); 
       }); 
      }); 

はその後、私は私のブラウザのクロームはフラッシュが有効になっていることを確認しました。取得のみ、サーバログで

<cross-domain-policy> 
    <allow-access-from domain="*" to-ports="*"/> 
</cross-domain-policy> 

: 私は、ポート843および10843をリスニングし、応答していることを確認

debug - served static content /socket.io.js 
debug - client authorized 
info - handshake authorized 14328044138726156 
debug - setting request GET /socket.io/1/xhr-polling/14328044138726156?t=1333755740295 
debug - setting poll timeout 
debug - client authorized for 
debug - clearing poll timeout 
debug - xhr-polling writing 1:: 
debug - set close timeout for client 14328044138726156 
debug - setting request GET /socket.io/1/xhr-polling/14328044138726156?t=1333755740299 
debug - setting poll timeout 
debug - clearing poll timeout 
debug - xhr-polling writing 5:::{"name":"echo","args":["transport type : xhr-polling; and socket.id : 14328044138726156"]} 
debug - set close timeout for client 14328044138726156 
debug - discarding transport 
debug - cleared close timeout for client 14328044138726156 
debug - setting request GET /socket.io/1/xhr-polling/14328044138726156?t=1333755740303 
debug - setting poll timeout 
debug - discarding transport 
debug - cleared close timeout for client 14328044138726156 
debug - clearing poll timeout 
debug - xhr-polling writing 8:: 
debug - set close timeout for client 14328044138726156` 

おかげで、あなたが実際に

+0

クライアントがSWFファイルを要求し正しく受信していることを確認しましたか? –

+0

あなたに感謝します:はい私はチェックしました:しかし、クライアントはこのファイルを要求していません。私はまた、.swfにアクセスできることを確認しました:そうです。 – jerome

+0

私は、http://localhost/socket.io/WebSocketMain.swfを確認しました。スクリーンに「welcome to socket.io」と書いてあります。 – jerome

答えて

6

を助けるために、それは働きます!

XHRのおかげで、より分析してテストできるようになりました。私は自分で見つけることができました。

正常に動作しますが、期待どおりに異なります。 ブラウザでwebsocketが有効になっている場合、代わりにflashsocketを使用することはできません。

サーバーを設定しても:transports: ['flashsocket', 'htmlfile', 'xhr-polling', 'jsonp-polling'] Google Chromeは、websocketが有効で、xhrポーリングに戻ってしまうため、flashsocketを使用しません。 しかし、websocketを有効にしていないインターネットエクスプローラは、flashsocketを使用します。

私はこの動作が私のために働くので、websocketなしでsocket.ioを設定する必要はありません。

さらに、この動作は、重い.swfファイルを必要としないときに読み込むことができないため、この動作が良いと思います。

ジェローム。

関連する問題