2014-10-28 40 views
2

我使用socket.io和表達框架工作nodejs。以下是我獲得的日誌輸出,當我運行命令時是否將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 2014-10-28 14:04:29

+0

沒有。代碼直接命中本地主機:3000 – 2014-10-28 14:55:57

回答

1

是的,它使用polling first and then upgrades to websocket。我確定,如果您使用瀏覽器連接或使用wireshark,您會看到服務器上的「HTTP/1.1 101交換協議」消息。 你也看到在日誌「引擎:WS」這意味着WebSocket正在工作。 如果您仍然不確定是否可以打印出運輸類型(例如斷開連接)。這是服務器端代碼(socket.io 1.1.0):

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

嗨。如果您看到日誌'Bug引擎:ws寫入'3probe「+ 0ms'出現在'引擎:套接字寫入一個noop數據包到輪詢快速升級+ 100ms'之前。即使在嘗試從輪詢升級到websocket之前。這意味着'engine:ws'的出現並不意味着運輸已經轉移到websocket – 2014-10-30 09:51:13

+0

是的,這是真的,它並不意味着運輸一般地轉移了。但是在日誌結尾它記錄的很好。無論如何,我只是嘗試套接字傳輸類型的調試輸出。我在我的服務器中使用它,當客戶端連接它時,我們斷開它的websocket。 – DerM 2014-10-30 10:15:02

相關問題