LINUX.ORG.RU

История изменений

Исправление romanlinux, (текущая версия) :

в express.js. можно так

const express = require('express');

const app = express();

app.use((req, res, next) => {
    // Устанавливаем таймаут в 5 секунд
    req.setTimeout(5000, () => {
        req.destroy(new Error('Request timeout'));
    });
    next();
});

app.get('/long-request', async (req, res) => {
    // Симуляция долгого запроса
    await new Promise(resolve => setTimeout(resolve, 10000));
    res.send('This should not be reached');
});

// Глобальный обработчик ошибок
app.use((err, req, res, next) => {
    if (err.message === 'Request timeout') {
        return res.status(408).json({ error: 'Request timeout' });
    }
    next(err);
});

app.listen(3000, () => console.log('Server running on port 3000'));

и этот timeout должен быть равен timeout nginx-а

Исходная версия romanlinux, :

в express.js. можно так

const express = require('express');

const app = express();

app.use((req, res, next) => {
    // Устанавливаем таймаут в 5 секунд
    req.setTimeout(5000, () => {
        req.destroy(new Error('Request timeout'));
    });
    next();
});

app.get('/long-request', async (req, res) => {
    // Симуляция долгого запроса
    await new Promise(resolve => setTimeout(resolve, 10000));
    res.send('This should not be reached');
});

// Глобальный обработчик ошибок
app.use((err, req, res, next) => {
    if (err.message === 'Request timeout') {
        return res.status(408).json({ error: 'Request timeout' });
    }
    next(err);
});

app.listen(3000, () => console.log('Server running on port 3000'));