【发布时间】:2013-11-20 13:26:36
【问题描述】:
http.IncomingMessage 何时触发其“关闭”事件?
根据documentation,它应该在底层连接关闭时发生。但是,以下示例代码从未调用它(我确保它不是由 keep-alive 引起的):
var http = require('http'),
fs = require('fs');
var server = http.createServer(function(req, res) {
res.shouldKeepAlive = false;
req.on("end", function() {
console.log("request end");
});
req.on("close", function() {
console.log("request close"); // Never called
});
res.end("Close connection");
});
server.listen(5555);
我正在使用 node.js v0.10.22。
【问题讨论】:
-
我不确定,但是如果在请求完成之前尝试中止请求呢?如果我在说废话,请原谅我
-
你是对的,当底层连接在发送响应之前关闭时,可能会触发'close'?
-
试试看,延迟几秒看看会发生什么
-
你是对的!谢谢!
-
@gustavohenke 这是一个很好的问题,因为文档nodejs.org/api/http.html#http_event_close_2 没有明确说明。这个问题和答案有帮助。无论如何触发关闭事件会更有意义,我经常将底层连接打开以提高效率。更合适的术语是“中止”事件。