NodeJs TCP 客户端缓冲区大小调用多个“数据”事件



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

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

您所指bufferSize可写流的只读属性:

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

(如果你在谈论别的事情,请纠正我)

如果要控制客户端接收数据的方式,则应将流设置为非流动模式:

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

(见文档)

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

最新更新