2014-10-28 1 views
2

nodejs를 socket.io 및 express 프레임 작업과 함께 사용하고 있습니다. 다음은 내가 명령을 실행할 때 얻을 수있는 로그 출력입니다.socket.io 업그레이드가 폴링에서 websocket으로 전송됩니까?

DEBUG=* /bin/www 

로그 출력은 다음과 같습니다.

engine intercepting request for path "/socket.io/" +2m 
    engine handling "GET" http request "/socket.io/?EIO=3&transport=polling&t=1414498393419-0" +0ms 
    engine handshaking client "WECN1dP0tobacKc8AAAB" +1ms 
    engine:socket sending packet "open" ({"sid":"WECN1dP0tobacKc8AAAB","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":60000}) +0ms 
    engine:polling setting request +0ms 
    engine:socket flushing buffer to transport +0ms 
    engine:polling writing " �0{"sid":"WECN1dP0tobacKc8AAAB","upgrades":["websocket"],"pingInterval":25000,"pingTimeout":60000}" +1ms 
    engine:socket executing batch send callback +1ms 
    socket.io:server incoming connection with id WECN1dP0tobacKc8AAAB +2.5m 
    socket.io:client connecting to namespace/+1.3m 
    socket.io:namespace adding socket to nsp/+2.5m 
    socket.io:socket socket connected - writing packet +1.3m 
    socket.io:socket joining room WECN1dP0tobacKc8AAAB +0ms 
    socket.io:client writing packet {"type":0,"nsp":"/"} +1ms 
    socket.io-parser encoding packet {"type":0,"nsp":"/"} +2.5m 
    socket.io-parser encoded {"type":0,"nsp":"/"} as 0 +0ms 
    engine:socket sending packet "message" (0) +1ms 
    socket.io:socket joined room WECN1dP0tobacKc8AAAB +5ms 
    engine intercepting request for path "/socket.io/" +140ms 
    engine handling "GET" http request "/socket.io/?EIO=3&transport=polling&t=1414498393557-1&sid=WECN1dP0tobacKc8AAAB" +0ms 
    engine setting new request for existing client +1ms 
    engine:polling setting request +0ms 
    engine:socket flushing buffer to transport +0ms 
    engine:polling writing "�40" +0ms 
    engine:socket executing batch send callback +0ms 
    engine upgrading existing transport +39ms 
    engine:socket might upgrade socket transport from "polling" to "websocket" +0ms 
    engine intercepting request for path "/socket.io/" +16ms 
    engine handling "GET" http request "/socket.io/?EIO=3&transport=polling&t=1414498393618-2&sid=WECN1dP0tobacKc8AAAB" +0ms 
    engine setting new request for existing client +0ms 
    engine:polling setting request +0ms 
    engine:ws received "2probe" +2ms 
    engine:ws writing "3probe" +0ms 
    engine:socket writing a noop packet to polling for fast upgrade +100ms 
    engine:polling writing "�6" +0ms 
    engine:ws received "5" +4ms 
    engine:socket got upgrade packet - upgrading +0ms 
    engine:ws received "2" +25s 
    engine:socket packet +0ms 
    engine:socket got ping +0ms 
    engine:socket sending packet "pong" (undefined) +0ms 
    engine:socket flushing buffer to transport +0ms 
    engine:ws writing "3" +0ms 
    engine:ws received "2" +25s 
    engine:socket packet +0ms 
    engine:socket got ping +0ms 
    engine:socket sending packet "pong" (undefined) +0ms 
    engine:socket flushing buffer to transport +0ms 
    engine:ws writing "3" +0ms 
    engine:ws received "2" +25s 
    engine:socket packet +0ms 
    engine:socket got ping +0ms 
    engine:socket sending packet "pong" (undefined) +0ms 
    engine:socket flushing buffer to transport +0ms 
    engine:ws writing "3" +0ms 
    engine:ws received "2" +25s 
    engine:socket packet +0ms 
    engine:socket got ping +0ms 
    engine:socket sending packet "pong" (undefined) +0ms 
    engine:socket flushing buffer to transport +0ms 
    engine:ws writing "3" +1ms 

전송 업그레이드를 확인하는 로그 메시지가 표시되지 않습니다. 또한 탁구 메시지가 계속 발생합니다.

websocket 전송이 설정된다는 것을 의미합니까?

+0

노드 응용 프로그램 뒤에서 역방향 프록시를 사용합니까? – Techniv

+0

no. 코드가 로컬 호스트에 직접 도달합니다 : 3000 –

답변

1

예, polling first and then upgrades to websocket을 사용합니다. 브라우저에서 연결하거나 wireshark를 사용하면 서버에서 "HTTP/1.1 101 Switching Protocols"메시지가 나타납니다. 또한 "engine : ws"로그에서 websocket이 작동 중임을 의미합니다. 여전히 확실하지 않은 경우 전송 유형을 인쇄 할 수도 있습니다 (예 : 분리시). 이것은 서버 측 코드 (socket.io 1.1.0)입니다.

socket.on('disconnect', function() { 
    console.log(socket.id + ' disconnect ('+ socket.client.conn.transport.constructor.name +')'; 
    }); 
+0

안녕하세요. 로그에'버그 엔진 : ws writing "3probe"+ 0ms "메시지가 표시되면 엔진 : 소켓이 빠른 업그레이드를 위해 폴링에 noop 패킷을 쓰는 + 100ms 이전에옵니다. 즉 폴링에서 웹 소켓으로 업그레이드하려는 시도 이전까지도 마찬가지입니다. 즉, '엔진 : ws'의 모양이 전송이 websocket으로 전환되었음을 의미하지 않습니다. –

+0

예, 전송이 일반적으로 이동했음을 의미하지 않습니다. 그러나 로그 끝 부분에서는 꽤 잘 기록됩니다. 어쨌든 소켓 전송 유형의 디버그 출력을 시도해 보겠습니다. 내 서버에서 사용하고 클라이언트가 폴링을 연결하면 웹 소켓 연결을 끊습니다. – DerM

관련 문제