История изменений
Исправление 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'));