Node http请求中数据块的types

我在这里学习设置一个简单的节点服务器的代码。 我已经看到并习惯了将数据块保存在一个数组中,并最终将它们连接在一起。

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的types是什么? 文档说它是Bufferstring ,但哪一个?

  2. 调用Buffer.concat(body)是否安全,其中body是一个string数组? Buffer.concat(list)说明文件应该是Buffer实例列表。 string是“缓冲区实例”吗?

同样的文件还指出:

如果使用readable.setEncoding()方法为stream指定了默认编码,则监听器callback将作为string传递数据块; 否则数据将作为Buffer传递。

因为你的代码没有调用setEncoding ,所以chunk将是一个Buffer。

调用Buffer.concat(body)是否安全,其中body是一个string数组?

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

所以不行。 但由于body将是Buffer的一个数组, Buffer.concat(body)应该工作得很好。