gpt4 book ai didi

javascript - Node.js 进程间通信故障

转载 作者:行者123 更新时间:2023-12-01 02:39:01 25 4
gpt4 key购买 nike

给定以下父进程代码:

//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,因为我无法弄清楚如何为子/父进行双工通信。如何达到同样的效果?

最佳答案

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

这意味着你的 if 永远不会评估 true

您可以尝试在消息中添加状态吗:

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

关于javascript - Node.js 进程间通信故障,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47693913/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com