Node.js 进程间通信错误

Node.js Inter-process communication Faulters

给定以下父进程代码:

//SSO
this.sso = fork('./app/utils/SSOproxy.js', [], {
  stdio: [0, 1, 2, 'ipc']
});
console.log(process);
console.log(this.sso);

//__handshake
this.sso.send({
  opcode: 'ACK',
  params: [],
  ref: null
});
console.log('STEP_1');
process.prependOnceListener('message', ((msg) => {
  if (msg.status) {
    if ((msg.opcode === 'ACK') && (msg.params[0] === 'ok')) {
      console.log('STEP_3');
    }
  }
}));

//__e.o.handshake

和子进程 (SSOproxy.js) 代码:

process.on('message', ((msg) => {
  switch (msg.opcode) {
    //handshake
    case 'ACK':
      process.send({
        opcode: 'ACK',
        params: ['ok'],
        ref: null
      });
      console.log('STEP_2');
      break;
      //Other paths...
  }
));

在观察到的日志中 - STEP_1 后跟 STEP_2 但我从来没有看到 STEP_3 因为我无法终生弄清楚如何获得双工child/parent 的通信。如何实现相同?

在您的 prependOnceListener 中,您有 msg.status 的条件,但我在您的 SSOproxy.js 代码的任何地方都没有看到这个。

这意味着您的 if 永远不会计算 true

您可以尝试在您的消息中添加 status 吗:

process.send({
    opcode:'ACK',
    params:['ok'],
    ref: null,
    status: 'test1234'
});