2015-10-15 156 views
0

我需要编写一个程序来获取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(); 
}); 

上述代码仅在服务器无法访问或无法联系时执行。但我的问题是迫使连接关闭。 有没有人有任何想法?

回答

1

试一试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); 
}); 
+0

它不适合我!请求仍然需要超过2000毫秒! – JGC

+0

我使用example.com测试了上面的代码片段。对于超时属性值较低,我得到了一个ETIMEDOUT错误,所以它肯定有效([email protected] +节点4.1.1)。没有真实的代码,我什么都不能做。 – PatrickD