Node http请求中的数据块类型

时间:2017-05-26 19:23:12

标签: node.js

我正在研究设置简单节点服务器的代码here。我已经看过并多次使用过这种在数组中保存数据块并最终将它们连接在一起的习惯用法。

http.createServer(function(request, response) {
  var body = [];
  request.on('data', function(chunk) { body.push(chunk); });
  request.on('end', function() { body = Buffer.concat(body).toString();
  ...
  1. chunk的类型是什么? Documentation表示它是Bufferstring,但是哪一个?

  2. 调用Buffer.concat(body)是否可以安全地body是一个字符串数组? Documentation of Buffer.concat(list)list应该是一个列表缓冲区实例。字符串是“缓冲区实例”吗?

1 个答案:

答案 0 :(得分:2)

同样的文件还指出:

  

如果使用readable.setEncoding()方法为流指定了默认编码,则侦听器回调将作为字符串传递数据块;否则数据将作为Buffer传递。

由于您的代码没有调用setEncodingchunk将成为缓冲区。

  

调用Buffer.concat(body) body是一个字符串数组是否安全?

> Buffer.concat(['foo', 'bar', 'xxx'])
TypeError: "list" argument must be an Array of Buffers

所以没有。但由于body将是一个缓冲区数组,Buffer.concat(body)应该可以正常工作。