必须使用node.js在express中调用res.end()吗?

时间:2013-12-03 15:29:32

标签: node.js express

我有几个Express个应用程序,我看到在某些模块中,res.end()在请求处理程序结束时调用(res.sendres.json之后),而在其他情况下,它并没有被称为。

例如:

app.get('/test', function(req, res) {
    res.send('Test', 200);
});

或:

app.get('/test', function(req, res) {
    res.send('Test', 200);
    res.end();
});

这两种情况都有效,但是当我运行很多请求时,我担心泄漏或耗尽文件描述符或类似的东西。哪一个“更正确”?

3 个答案:

答案 0 :(得分:108)

你的问题的答案是否定的。如果拨打res.end(),则无需致电res.send()res.send()为您致电res.end()

取自/lib/response.js,这是res.send()函数的结尾:

  //. . .
  // respond
  this.end(head ? null : body);
  return this;
}

答案 1 :(得分:7)

您必须调用end()函数的一个示例是将缓冲区作为要下载的文件发送。

res.write(buffer);
res.end();

答案 2 :(得分:3)

  

res.end([data] [, encoding])

结束响应过程。此方法实际上来自节点核心,特别是response.end() method of http.ServerResponse. 用于在没有任何数据的情况下快速结束响应。

  

如果您需要回复数据,请使用诸如此类的方法   的 res.send() and res.json().