我正在尝试在没有运气的情况下使用http.request的HTTP客户端设置超时.到目前为止我所做的是这样的:
var options = { ... }
var req = http.request(options, function(res) {
// Usual stuff: on(data), on(end), chunks, etc...
}
/* This does not work TOO MUCH... sometimes the socket is not ready (undefined) expecially on rapid sequences of requests */
req.socket.setTimeout(myTimeout);
req.socket.on('timeout', function() {
req.abort();
});
req.write('something');
req.end();
Run Code Online (Sandbox Code Playgroud)
任何提示?
问题
我一直在寻找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分钟.