NodeJs TCP客户端bufferSize调用多个`data`事件?

时间:2013-10-15 16:49:56

标签: node.js tcp

我刚注意到NodeJs TCP Client中有bufferSize,您可以将传入缓冲区限制为TCP客户端。

所以我的问题是,如果我将客户端的bufferSize设置为1个字节并从服务器发送16个字节,我应该在客户端获得16个不同的data事件吗?

1 个答案:

答案 0 :(得分:2)

您所指的bufferSize可写流的read-only property

Object.defineProperty(Socket.prototype, 'bufferSize', {
  get: function() {
    if (this._handle) {
      return this._handle.writeQueueSize + this._writableState.length;
    }
  }
});

(如果你在谈论其他事情,请纠正我)

如果您想控制客户端接收数据的方式,您应该在non-flowing mode中设置您的信息流:

readable.on('readable', function() {
  var chunk;
  while (null !== (chunk = readable.read())) {
    console.log('got %d bytes of data', chunk.length);
  }
});

see doc

如果您只想读取5个字节,则可以传递readable.read(5)。默认情况下,流将处于非流动模式,除非您附加'data'事件(因此请勿在您的情况下执行此操作)。