我正在使用node.js 0.6.18,並且以下代碼使node.js關閉了每兩個請求之間的TCP連接(在Linux上使用strace
進行了驗證)。如何讓node.js爲多個HTTP請求重用相同的TCP連接(即保持活動狀態)?請注意,網絡服務器能夠保持活力,它可以與其他客戶端協同工作。 Web服務器返回分塊的HTTP響應。如何在node.js中使用HTTP keep-alive連續發送請求?
var http = require('http');
var cookie = 'FOO=bar';
function work() {
var options = {
host: '127.0.0.1',
port: 3333,
path: '/',
method: 'GET',
headers: {Cookie: cookie},
};
process.stderr.write('.')
var req = http.request(options, function(res) {
if (res.statusCode != 200) {
console.log('STATUS: ' + res.statusCode);
console.log('HEADERS: ' + JSON.stringify(res.headers));
process.exit(1)
}
res.setEncoding('utf8');
res.on('data', function (chunk) {});
res.on('end', function() { work(); });
});
req.on('error', function(e) {
console.log('problem with request: ' + e.message);
process.exit(1);
});
req.end();
}
work()
是你能不斷想出解決辦法? –
不,我不知道答案 – pts
你可能想知道調用work()會產生堆棧內存泄漏。這是因爲每個結束事件都會向work()添加一個新的調用,除非每次調用的結束事件都完成,否則不會釋放堆棧。 要解決這個問題,您可能需要通過調用「process.nextTick(work);」來推送work()超出範圍。這將允許終止處理程序的作用域終止。 – thesmart