2017-01-25 55 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。