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”事件,而不是听取“完成”事件,具体取决于您要测量的内容.

相关文章

这篇文章主要介绍“基于nodejs的ssh2怎么实现自动化部署”的...
本文小编为大家详细介绍“nodejs怎么实现目录不存在自动创建...
这篇“如何把nodejs数据传到前端”文章的知识点大部分人都不...
本文小编为大家详细介绍“nodejs如何实现定时删除文件”,内...
这篇文章主要讲解了“nodejs安装模块卡住不动怎么解决”,文...
今天小编给大家分享一下如何检测nodejs有没有安装成功的相关...