Узел Экспресс определенное значение времени ожидания для маршрута

Я разрабатываю приложение 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?В чем разница между тайм-аутами сервера и сокета и как их правильно настроить для определенного маршрута?

Ответы на вопрос(1)

Ваш ответ на вопрос