当child_process第二次分叉时,Node.js“错误:通道关闭”.send

时间:2016-07-06 17:31:28

标签: javascript node.js child-process

我遇到了一些问题,当它第二次分叉时,试图将数据发送到子进程。

以下是我正在尝试做的示例代码:

var child_process = require("child_process");
var io = require("socket.io")(app); //app contains http server

var pageSocket = io.of('/somePage');

io.on("connection", function(socket){
    var child = child_process.fork('./sample.js');

    socket.on('some:event', function(){
        child.send({key: value});
    });     

    child.on('message', function(data){
        //Do something
    });

    child.on('exit', function(code, signal){
        if (signal === 'SIGTERM') {
            socket.emit('page:closed');
        }
    });

    socket.on('page:close', function(){
        child.kill("SIGTERM");
    });
});

我做了一个非常简单的例子,因为所有socket函数都在工作。在客户端调用事件page:closed后,我的应用程序与套接字断开连接并更改页面。当我回到那个pageSocket时,它再次连接,孩子被分叉(我对孩子做了一个console.log,只是为了确定)但是,当some:event被安排时,服务器尝试调用child.send我收到以下错误:

Error: closed channel

我已尝试将SIGHUPSIGKILLSIGINT作为信号传递给.kill方法,并尝试使用process.exit(0) <关闭孩子。 / p>

0 个答案:

没有答案