使用restify / express在HTTP请求中定时体传输

时间:2014-09-04 23:26:07

标签: node.js express restify

HTTP应用程序正在以特定的POST方法发送大型主体。我想测量收到标题后服务器所用的时间,直到收到正文。有没有办法在restify或express中将事件(数据,结束)分配给路由定义?我不想切换到node.js的原始HTTP服务器。

1 个答案:

答案 0 :(得分:1)

Restify使用formidable来处理文件上传。您可以使用与restify捆绑在一起的bodyParser插件来侦听多部分文件处理程序上的事件。可以记录end事件以了解文件何时被完全接收。

使用restify服务器的pre()方法记录收到请求的时间。

var restify = require('restify');
var server = restify.createServer();

server.post('/upload', function(req, res, next){
  res.send({upload: 'done'});
  next();
});

server.pre(function (req, res, next) {
  console.log("Request received at: " + req._time);
  next();
});

server.use(restify.bodyParser({
  multipartFileHandler: function(part) {
    // Fired when the parser is done receiving the file
    part.on('end', function(data) {
      console.log('File parsing ended: ' + new Date().getTime());      
    });
  }
}));

server.listen(8080, function() {
  console.log('%s listening at %s', server.name, server.url);
});