2016-07-26 62 views
0
不可讀

服務器:socket.io幀數據中鉻devtools

function startServer() { 
    const io = new Server().attach(8090); 

    io.on('connection', (socket) => { 
    console.log("connection on server"); 
    socket.emit('test','test data'); 
    }); 
} 

客戶:

const socket = io(`${location.protocol}//${location.hostname}:8090`); 
socket.on('test', (data) => { 
    console.log(data); 
}) 

然後:

  • 我啓動服務器
  • 我打開客戶端代碼

服務器日誌輸出:

connection on server 

客戶端控制檯輸出:

test data 

所以一切看起來不錯,但是當我打開WebSocket的面板上鍍鉻devtools我看到這一點: dev tools output

我無法在框架中找到websocket數據:只有「探針」的東西和數字。

我怎樣才能看到幀數據?

使用https://www.websocket.org/echo.html我能夠很好地在幀中讀取數據: websocket echo WS devtool panel

回答

1

2probe和隨機數你看到在幀面板包類型,其次是客戶端和服務器之間的平/乒乓球。你可以閱讀詳細信息here

如果你是從服務器廣播消息您只能查看在幀面板中的數據。在你的情況下,你正在向連接的客戶端發送帶有數據的消息,並在回調中處理它。如果你自己和所有其他客戶希望看到的數據,使用:

io.sockets.emit('test', 'test data'); 

如果兩個客戶端連接到服務器進行,​​雙方將收到test data,當事件與客戶端上的test事件處理。當第二個客戶端連接時,您將在「框架」面板中看到該消息。你沒有看到它爲你自己的連接。

如果你想只播出的消息給所有其他客戶,但不是自己,用:

socket.broadcast.emit('test','test data'); 

你可以看到在chrome://net-internals/一些更多的信息,表示被髮送的數據,但它不告訴你實際的文本內容,除非你有一個網絡嗅探工具,如WiresharkFiddler

net internals