从节点j

时间:2016-01-12 09:23:29

标签: javascript node.js sockets http express

我正在创建一个将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 );

如果有任何方法可以实现我想要的任何想法吗?

1 个答案:

答案 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();