【发布时间】:2014-03-09 14:44:29
【问题描述】:
问题
我一直在寻找 Express.js 的请求/响应超时,但似乎一切都与连接有关,而不是与请求/响应本身有关。
如果请求需要很长时间,则应该超时。显然这不应该发生,但即使是一个简单的错误,例如没有调用回调或没有 res.send() 的路由处理程序,浏览器将永远等待回复。
空路由处理程序就是一个很好的例子。
app.get('/sessions/', function(req, res, callback){});
修复
我添加了以下之前 app.use(app,router);,它似乎添加了超时功能。有没有人对此有任何经验/意见?
app.use(function(req, res, next){
res.setTimeout(120000, function(){
console.log('Request has timed out.');
res.send(408);
});
next();
});
请注意,我已将超时设置为 2 分钟。
【问题讨论】:
-
我只会将其用于开发目的——我想不出有一个用例可以让您使用空路由发送生产代码。
-
当然,我的观点是,它可能会出现请求会一直等待的问题。错误发生。我只是想设置一个响应超时以防万一。
-
知道了——见下面的答案
-
空路由作为网络蜘蛛的陷阱?
-
当我尝试使用 Express.js(实际上是 json-server)构建测试服务以模拟/诱导各种错误情况时,这个“功能”实际上非常有用在服务器端。大多数此类错误对应于 HTTP 状态代码(例如 Bad Request),是的,但我也想在调用方端引起 SocketTimeoutException。
标签: node.js express timeout response settimeout