2015-10-15 162 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