我正在创建一个将http请求传递给Node js中的子进程的系统。我不能使用child.send('socket',req.socket)传递子进程的活动Socket,但在子进程中我想重新创建http请求和响应对象,以便它们具有头,参数,cookie等。
我正在使用Express,所以如果我可以重新创建Express req和res对象,那就更好了。
我一直在摆弄,但没有成功。 如果我执行以下操作,它将创建IncomingMessage对象,但标题等为空。
var http = require('http');
/* Child Process recieves the Socket */
var incomingMessage = new http.IncomingMessage( socket );
如果有任何方法可以实现我想要的任何想法吗?
答案 0 :(得分:0)
您还可以使用以下技巧进行隧道传输:
let agent;
if (protocol == 'https:')
agent = new https.Agent();
else
agent = new http.Agent();
agent.createConnection = (opts, callback) => callback(false, socket);
const req = http.request({
method: method,
host: host,
port: port,
protocol: protocol,
path: path,
headers: headers,
agent: agent
}, function (res)
{
console.log(res.headers);
console.log(res.socket.remoteAddress);
console.log(res.socket == socket); // true
});
req.end();