在nodejs中持续一段时间后挂断http连接
问题描述:
我需要编写一个程序来获取nodejs中某些现有服务的一些json数据。但通过关注我的应用程序中的实时情况,我需要确保准备好的答案不会花费比较长的时间,例如2秒。 在那段时间之后,我想切断已建立的连接,并从我自己的数据库中为客户端提供我的数据。 我已经搜索了很多,但我发现的唯一的事情是在http.request中设置套接字的超时,这将在下面介绍。在nodejs中持续一段时间后挂断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();
});
上述代码仅在服务器无法访问或无法联系时执行。但我的问题是迫使连接关闭。 有没有人有任何想法?
答
试一试request模块。对于像这样的东西真的很棒:
var request = require('request');
request({
method: 'GET',
uri: 'http://www.example.com',
timeout: 2000,
}, (err, response, body) => {
if (err) {
return console.error(err);
}
console.log(response);
});
它不适合我!请求仍然需要超过2000毫秒! – JGC
我使用example.com测试了上面的代码片段。对于超时属性值较低,我得到了一个ETIMEDOUT错误,所以它肯定有效([email protected] +节点4.1.1)。没有真实的代码,我什么都不能做。 – PatrickD