Узел Экспресс определенное значение времени ожидания для маршрута
Я разрабатываю приложение Node v4.2.4 с использованием Express v4.13.4. Теперь я хотел бы увеличить время ожидания для конкретного маршрута загрузки.
Из того, что я прочитал и испытал:
время ожидания Node-сервера по умолчанию составляет 2 минутысокет Node по умолчанию не имеет тайм-аутаесть промежуточное программное обеспечение от Express для обработки тайм-аутовТем не менее, я потерял при попытке реализоватьподключения тайм-аут промежуточное ПО для маршрута загрузки.
Настройка приложения
const app = express();
app.use(cors());
app.use(bodyParser.json({ limit: '50mb' }));
app.use(bodyParser.urlencoded({ limit: '50mb', extended: false }));
app.use(passport.initialize());
app.use('/uploads', uploadRoutes);
app.use(errorHandler);
function errorHandler(err, req, res, next) {
if (err.code && err.code === 'ETIMEDOUT') {
if (!res.headersSent) {
res
.status(408)
.send({
success: true,
message: 'Timeout error'
});
}
}
next(err);
}
const server = app.listen(config.port);
Загрузить определение маршрута
router.route('/:uploadId/upload-files')
.post(timeout('3m'),
require('./actions/upload-files').prepareHandler,
require('./actions/upload-files').uploadHandler(),
require('./actions/upload-files').responseHandler);
Однако при загрузке файлов я вижу ошибку отexpress-timeout
через 3 минуты ТОЛЬКО в консоли командной строки. Запрос все еще выполняется, и код состояния 408 не возвращается.
Через 4 минуты я наконец вижу статус 408 и «Ошибка тайм-аута» как часть объекта ответа.
Для запросов на другие маршруты я получаюnet::ERR_EMPTY_RESPONSE
ошибка через 4 минуты.
Если я регистрирую значение дляserver.timeout
, значение120000
(2 минуты).
Мои вопросы
откуда взять 4 минуты? Может быть, потому что есть предыдущий запрос OPTIONS?В чем разница между тайм-аутами сервера и сокета и как их правильно настроить для определенного маршрута?