Node.js 将响应对象句柄的句柄传递给子进程

Posted

技术标签:

【中文标题】Node.js 将响应对象句柄的句柄传递给子进程【英文标题】:Node.js pass handle of response object handle to child process 【发布时间】:2013-07-14 13:10:23 【问题描述】:

我有一个http 服务器和一个分叉的子进程。我希望父母接收请求并使用worker.send 传递给分叉进程。并且工作人员应该能够使用相同的响应对象处理响应并将其发送回请求者。

我尝试在worker.send的第二个参数中发送响应对象,但它给出了错误This handle type can't be sent

var child_process = require('child_process');

var worker = child_process.fork(filename);

http.createServer(function (req, res) 
    worker.send( 'event': 'start' , res); // send response object
).listen(4000);

我检查了 child_process.js 文件,它说如果它不属于某些类型,它会抛出错误。

我想知道是否有任何其他选项可以将响应对象发送给分叉的孩子。

编辑:

好的,这就是我找到的,我只是更改了以下内容

// Instead of
// worker.send( 'event': 'start' , res);
worker.send( 'event': 'start' , res.socket);

并且分叉的进程能够在它获得的处理程序上调用write

正确吗?我可以这样使用吗?还是在某些诸如此类的情况下会有任何影响?

【问题讨论】:

嗨@Салман。你有没有解决这个问题?我遇到了同样的问题。 不,但我想我设法以其他方式解决了这个问题,而不是用这种方法。如果您有可以分享的特定用例,您可以找到解决方案。 【参考方案1】:

worker.send 只接受来自 net.createServer 函数的请求。尝试使用“net”包而不是 http 更好。这解决了我的问题

【讨论】:

以上是关于Node.js 将响应对象句柄的句柄传递给子进程的主要内容,如果未能解决你的问题,请参考以下文章

golang 热重启

Node.js:Jest + redis.quit() 但打开句柄警告仍然存在

securecrtYmodem句柄无效

通过 DCOM 传递 NT 句柄

将 STARTF_USESTDHANDLES 标志与 CreateProcess() 一起使用时将套接字传递给子进程时出错

无法使用 Node Js App 在句柄栏模板中包含 CSS 样式