微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – NodeJS / Express中的时间请求

将所有请求进入我的节点应用程序的最佳方法是什么?基本上我想要在请求的最开始获取当前的时间戳,然后再次在请求的最后得到差异并记录它.有关在NodeJS和Express中做最好的方法的建议?

这是我的应用程序的样例(虽然比这更复杂).

var express = require('express'),http = require('http'),app = express();

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

app.get('/about',function(req,next) {
   res.send(200,'something else');
});

var server = http.createServer(app);
server.listen(9000);
console.log("Express server listening...");

我想要时间所有的请求.所以我想要和/和/和任何其他端点我可能添加.

解决方法

这可能是诀窍: http://www.senchalabs.org/connect/responseTime.html

app.use(express.responseTime());

或者做这样的事情:

app.use(function(req,next) { req.start = Date.Now(); next(); });

app.get(...);
app.get(...);

app.use(function(req,res) { var time = Date.Now() - req.start; });

这要求所有的路由都调用next().

或者也许这个(与responseTime中间件相同的东西,但不设置头):

app.use(function(req,next) {
    var start = Date.Now();
    res.on('header',function() {
        var duration = Date.Now() - start;
        // log duration
    });
    next();
});

头发发送后,您可以聆听res的“header”事件,而不是听取“完成”事件,具体取决于您要测量的内容.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐