Передача времени в 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);
});