努力了解Readable流上的highWaterMark

时间:2019-05-30 02:44:38

标签: node.js busboy node-streams

我看到一些关于busboy和节点流highWaterMark属性不了解的行为。我希望块的大小最大为highWaterMark值,但是块的大小看起来不受highWaterMark设置的影响。

我已经在busboy中设置了fileHwm: 5选项,并且像这样设置了我的快速路线

app.post('/upload', function(req, res, next) {
  req.pipe(req.busboy); // Pipe it through busboy
  req.busboy.on('file', (fieldname, file, filename) => {
      console.log(`Upload of '${filename}' started`);
      console.log(file);
      file.on('readable', () => {
        let chunk;
        while (null !== (chunk = file.read())) {
          console.log(`Received ${chunk.length} bytes of data.`);
        }
      });

  });
});

当我登录file时,它看起来还不错,并且我看到highWaterMark属性设置得很好

FileStream {
  _readableState:
   ReadableState {
     objectMode: false,
     highWaterMark: 5,
...

但是我要取出的块的大小并不像我期望的那样5-相反,我看到的是

Received 65395 bytes of data.
Received 65536 bytes of data.
Received 65536 bytes of data.
Received 65536 bytes of data.

那有什么用呢?我本来希望read一次只返回5个字节。并不是说65kb的大小不好,没关系。我只是希望我了解正在发生的事情,以及是否有可能限制缓冲区大小。

0 个答案:

没有答案