2012-04-06 2 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.so.so."라는 환영 메시지를 화면에 표시했다. – jerome

답변

6

을 돕기 위해, 그것을 작동합니다!

덕분에 XHR 덕분에 나를 분석하고 테스트 할 수있게되었으므로 스스로 찾을 수있었습니다.

정상적으로 작동하지만 예상대로 다릅니다. 브라우저에서 websocket을 사용할 수 있으면 대신 flashsocket을 사용할 수 없습니다.

따라서 서버를 설정 한 경우 : transports: ['flashsocket', 'htmlfile', 'xhr-polling', 'jsonp-polling'] Google 크롬은 websocket을 사용하고 xhr 폴링으로 폴트하기 때문에 flashsocket을 사용하지 않습니다. 그러나 websocket을 사용할 수없는 인터넷 탐색기는 flashsocket을 사용합니다.

그리고이 문제는 나를 위해 작동하도록 websocket없이 socket.io를 설치할 필요가 없습니다.

또한이 동작은 필요하지 않은 경우 무거운 .swf 파일을로드하지 못하기 때문에 좋다고 생각합니다.

제롬.