기본 연결을 open (keep-alive) 상태로 유지하기 위해 HTTP 클라이언트를 설정하려고하는데 node.js에서 동작이 문서와 일치하지 않는 것으로 보입니다 (http://nodejs.org/api/http.html#http_class_http_agent).node.js에서 HTTP 연결 유지
maxSockets 속성을 1로 설정하고 매 초마다 URL (예 : http://www.twilio.com/
)을 요청하여 새 HTTP 에이전트를 만듭니다.
모든 요청시 소켓이 닫히고 새 소켓이 만들어지는 것 같습니다. 우분투 14.04에서 node.js 0.10.25와 0.10.36으로 이것을 테스트했습니다.
누구든지 계속 일하게 할 수 있습니까?
var http = require("http");
var agent = new http.Agent();
agent.maxSockets = 1;
var sockets = [];
function request(hostname, path, callback) {
var options = {
hostname: hostname,
path: path,
agent: agent,
headers: {"Connection": "keep-alive"}
};
var req = http.get(options, function(res) {
res.setEncoding('utf8');
var body = "";
res.on('data', function (chunk) {
body += chunk;
});
res.on('end', function() {
callback(null, res, body);
});
});
req.on('error', function(e) {
return callback(error);
});
req.on("socket", function (socket) {
if (sockets.indexOf(socket) === -1) {
console.log("new socket created");
sockets.push(socket);
socket.on("close", function() {
console.log("socket has been closed");
});
}
});
}
function run() {
request('www.twilio.com', '/', function (error, res, body) {
setTimeout(run, 1000);
});
}
run();
'http.get()'콜백 내에'console.dir (res.headers.connection)'이 무엇을 보여줄까? – mscdex
나는 이미 그것을 검사했고 호스트는 응답에 "Connection : keep-alive"헤더를 반환하여 연결을 계속 유지하도록 동의한다는 것을 나타냅니다. – quentinadam