Tôi đang sử dụng node.js 0.6.18 và mã sau làm cho node.js đóng kết nối TCP giữa hai yêu cầu (được xác minh bằng strace
trên Linux). Làm cách nào để làm cho node.js tái sử dụng cùng một kết nối TCP cho nhiều yêu cầu HTTP (tức là giữ nguyên)? Xin lưu ý rằng các máy chủ web có khả năng giữ sống, nó hoạt động với các khách hàng khác. Máy chủ web trả về một phản hồi HTTP chunked.Làm thế nào để gửi các yêu cầu liên tiếp với HTTP giữ nguyên trong node.js?
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()
là bạn có thể bao giờ con số này ra ? –
không, tôi không biết câu trả lời – pts
bạn có thể muốn biết rằng công việc gọi() sẽ tạo ra rò rỉ bộ nhớ ngăn xếp. Điều này là do mọi sự kiện kết thúc sẽ thêm một cuộc gọi mới vào công việc(), không bao giờ phát hành ngăn xếp trừ khi mọi sự kiện kết thúc của cuộc gọi hoàn tất. Để giải quyết vấn đề này, bạn có thể muốn đẩy công việc ra khỏi phạm vi bằng cách gọi "process.nextTick (công việc);". Điều này sẽ cho phép phạm vi của trình xử lý kết thúc chấm dứt. – thesmart