Передача времени в HTTP-запросах с использованием restify/express

HTTP-приложение отправляет большое тело определенным методом POST. Я хотел бы измерить время, затраченное на сервер с момента получения заголовков до получения тела. Можно ли назначить события (данные, конец) определению маршрута в restify или express? Я не хотел бы переключаться на необработанный HTTP-сервер node.js.

1 ответ

Restify использует грозные для обработки загрузки файлов. Вы можете использовать плагин bodyParser в комплекте с restify для прослушивания событий в обработчике файлов из нескольких частей. end Событие может быть зарегистрировано, чтобы знать, когда файл был полностью получен.

Используйте метод pre() сервера restify для записи, когда запрос был получен.

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);
});
Другие вопросы по тегам