【问题标题】:What events should I handle in express response (stream) object to handle when the response finishes?当响应完成时,我应该在快速响应(流)对象中处理哪些事件?
【发布时间】:2021-05-08 21:20:29
【问题描述】:

我正在尝试在请求完成时自动记录。

我有这样的事情:

function (req, res, next) {
    var startTime = clock.now();
    res.on('end'. function() {
        logger.trace("END ...", req.path, res.statusCode, clock.now() - startTime, ...);
    });
    res.on('error'. function() {
        logger.trace("END ...", req.path, clock.now() - startTime, ...);
    });
    nest();
}
  • 这样做是否涵盖所有情况? (例如,当请求被中断时)
  • 对于每个请求,我最多会被调用一次吗?

如果有任何答案是否定的,请说明如何做。

【问题讨论】:

  • 这个包对你的用例来说不够好吗? github.com/expressjs/response-time
  • 不是。它只是随时间设置一个响应标头。我希望能够在请求结束时记录。 这包括何时被客户端中断。您提到的模块使用on-headers,它修饰了res.writeHead 函数。 onHeaders 函数不应在中断的请求上调用。 @1461269 @arjabbar

标签: javascript node.js express dom-events node-streams


【解决方案1】:

尝试根据documentation设置完成事件:

这是一个示例实现:

app.use(function(req, res, next) {
    res.on('finish', function() {
        console.log('the response has been sent', res.statusCode);
    });
    next();
});

【讨论】:

    猜你喜欢
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 2017-08-09
    • 2012-04-16
    • 2014-02-16
    相关资源
    最近更新 更多