Xer*_*rri 57 timeout response settimeout node.js express
问题
我一直在寻找Express.js的请求/响应超时,但一切似乎都与连接有关,而不是请求/响应本身.
如果请求需要很长时间,则应该超时.显然这不应该发生,但即使是一个简单的错误,因为如果没有调用回调或不使用路由处理程序res.send()
,浏览器将一直等待回复.
空路由处理程序就是一个很好的例子.
app.get('/sessions/', function(req, res, callback){});
Run Code Online (Sandbox Code Playgroud)
固定
之前 我添加了以下内容app.use(app,router);
,它似乎添加了超时功能.有没有人对此有任何经验/意见?
app.use(function(req, res, next){
res.setTimeout(120000, function(){
console.log('Request has timed out.');
res.send(408);
});
next();
});
Run Code Online (Sandbox Code Playgroud)
请注意,我已将超时设置为2分钟.
srq*_*inn 66
已经有一个Connect Middleware for Timeout支持:
var timeout = express.timeout // express v3 and below
var timeout = require('connect-timeout'); //express v4
app.use(timeout(120000));
app.use(haltOnTimedout);
function haltOnTimedout(req, res, next){
if (!req.timedout) next();
}
Run Code Online (Sandbox Code Playgroud)
如果您计划将Timeout中间件用作上面的顶级中间件,则haltOnTimedOut
中间件需要是堆栈中定义的最后一个中间件,用于捕获超时事件.感谢@Aichholzer的更新.
请记住,如果您使用自己的超时中间件,则4xx状态代码用于客户端错误,5xx用于服务器错误.408时保留用于:
客户端在服务器准备等待的时间内没有产生请求.客户端可以在以后不经修改的情况下重复请求.
V31*_*V31 27
如果使用Express 4.2进行更新,则超时中间件已被删除,因此需要手动添加它
npm install connect-timeout
Run Code Online (Sandbox Code Playgroud)
它必须是代码(根据评论编辑,如何将其包含在代码中)
var timeout = require('connect-timeout');
app.use(timeout('100s'));
Run Code Online (Sandbox Code Playgroud)
ber*_*gle 13
var server = app.listen();
server.setTimeout(500000);
Run Code Online (Sandbox Code Playgroud)
灵感来自https://github.com/expressjs/express/issues/3330
要么
app.use(function(req, res, next){
res.setTimeout(500000, function(){
// call back function is called when request timed out.
});
next();
});
Run Code Online (Sandbox Code Playgroud)
如果您想使用超时中间件并排除特定路由:
var timeout = require('connect-timeout');
app.use(timeout('5s')); //set 5s timeout for all requests
app.use('/my_route', function(req, res, next) {
req.clearTimeout(); // clear request timeout
req.setTimeout(20000); //set a 20s timeout for this request
next();
}).get('/my_route', function(req, res) {
//do something that takes a long time
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
88761 次 |
最近记录: |