Node.js HTTP模块:Response + Request

我刚开始看一些节点教程,我想帮助理解从http.createServer()获得的响应和请求stream。 响应和请求是stream,所以这意味着比Node.js发送和接收数据块?

例如,如果我打电话

res.write("test1"); res.write("test2"); res.end(); 

当我调用end()时它是否只写这两个东西,或者当它调用write()的时候,它会刷新到stream并发送给发出请求的客户端?

另一个详细说明我的问题的例子是,如果我有一个txt文件与大量的明文数据,然后我设置一个读取stream,该数据从该文件pipe道数据的res对象将pipe它的数据块或一旦一切在缓冲区中。

我想我的问题也适用于请求对象。 例如,请求的主体是按照数据包的formsbuild立起来的,并且是stream式传输到服务器的,还是一次发送的,而节点只是select让我们使用stream来访问它。

非常感谢!

第一次调用response.write()时,会将caching的头信息和正文的第一个块发送给客户端。 第二次调用response.write(),Node.js假定数据将被stream式传输,并分别发送新的数据。 也就是说,响应被缓冲到身体的第一部分。

充分的foc

所以基本上,如果你写入()一小块数据,它可能会被caching,直到调用一个完整的块或者.end()为止。 如果.write()已经有一个块的大小,它将被立即传输。