9

我有一个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它获得的处理程序。

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

4

1 回答 1

0

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

于 2016-07-25T09:13:57.517 回答