【问题标题】:Node.js pass handle of response object handle to child processNode.js 将响应对象句柄的句柄传递给子进程
【发布时间】: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

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

【问题讨论】:

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

标签: javascript node.js http child-process


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-13
    • 1970-01-01
    • 2013-01-11
    • 1970-01-01
    • 1970-01-01
    • 2013-06-04
    相关资源
    最近更新 更多