将所有请求进入我的节点应用程序的最佳方法是什么?基本上我想要在请求的最开始获取当前的时间戳,然后再次在请求的最后得到差异并记录它.有关在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 举报,一经查实,本站将立刻删除。