2017-01-25 56 views
0

在通過node.js套接字傳遞數據時,誰確保數據完整接收/讀取?調用者或node.js?在node.js套接字中寫入和「數據」事件

每次寫入是否對應一個'數據'事件?我是否需要明確檢查以確保收到的數據的長度與寫入的內容相對應?換句話說,我必須保持長度標題嗎?

+0

websockets自己管理,如果這就是你問的。 – dandavis

+0

是否所有的node.js套接字都是websocket? –

+0

如果這就是你要求的,那麼沒有保證的交付。你有更具體的問題可以用代碼來說明嗎? –

回答

1

當你執行一個寫命令: socket.write(data[, encoding][, callback]),當數據被最後寫出 的callback參數將被執行 - 這可能不會馬上。

單個寫命令可能會導致的data事件序列:

const readable = getReadableStreamSomehow(); 
readable.on('data', (chunk) => { 
// chunk.length bytes of data received 
}); 

接收器需要以確保它通過檢查所有接收到的塊的長度接收整個緩衝器/字符串。這將需要有一個長度標題或類似的標記。

P.S.上面的答案適用於像套接字這樣的TCP。