У меня есть прокси-соединение «net», и мне нужно отправить запрос на несколько разных доменов и протоколов (http, https, ftp и т. Д.) С одним стабильным соединением с прокси-сервером.
var socket = net.connect(
1111, // proxy port
'xx.xx.xxx.xx' // proxy host
);
socket.on('connect', function(a) {
console.log('--- connect', socket.remoteAddress);
// connecting to https host
socket.write(
'CONNECT www.google.com:443 HTTP/1.1\r\n' +
'Proxy-Connections: keep-alive\r\n' +
'Host: www.google.com\r\n\r\n',
function() {
// send GET request and wait for response
socket.write(
'GET / HTTP/1.0\r\n' +
'User-Agent: Node.js/0.6.6\r\n' +
'Connection: keep-alive\r\n' +
'Host: www.google.com\r\n\r\n',
function(a) {
return socket;
}
);
/*
another requests to different protocols/ports...
socket.write(...)
*/
return socket;
});
});
socket.on('data', function(a) {
console.log('--- data', a.toString());
});
socket.on('drain', function() {
console.log('drain!');
});
socket.on('timeout', function() {
console.log('timeout!');
});
socket.on('close', function() {
console.log('Connection closed');
});
socket.on('end', function() {
console.log('Connection end');
});
После исполнения у меня следующий результат:
--- connect xx.xx.xxx.xx
--- data HTTP/1.0 200 Connection established
Connection end
Connection closed
Существует только один ответ как "Соединение установлено", но я не могу получить ответ от запроса "GET". Соединение закрывается после получения ответа.
Где я не прав? Погуглил, но нашел только одно решение - создать разные соединения для http или других протоколов и для https, но мне нужно отправлять запросы только с одного стабильного соединения.