是否可以在 NodeJS 集群模块中以不同于 "message" 的方式命名事件?
Is it possible to name events differently from "message" in the NodeJS cluster module?
我想知道(因为在官方文档中没有提到这一点)是否有办法从 worker
进程发出事件,这些进程具有与默认事件名称不同的事件名称,即 message,这样我就可以在主进程中设置监听器:
worker.once('someOtherMsgName', fn)
这样我就可以避免实际回调函数中的条件,只匹配监听器以根据消息名称对适当的消息执行回调?
否
"message" 表示 - IPC(进程间通信)收到了新的传入消息。 NodeJS 只有一种在进程之间发送消息的内置方式 - process.send and child_process.send
是
当然你可以使用第三方模块(例如node-ipc)或者让节点以任何你想要的方式解释消息内容:
main.js
const childProcess = require('child_process');
const fork = childProcess.fork(__dirname + '/fork.js');
const initIPC = require('./init-ipc');
initIPC(process);
fork.on('hello', event => {
console.log(event.hello);
});
// Say hello to forked process
fork.send({event: 'hello', hello: 'Hello from main process!'});
fork.js
const initIPC = require('./init-ipc');
initIPC(process);
process.on('hello', event => {
console.log(event.hello);
});
// Say hello to main process
process.send({event: 'hello', hello: 'Hello from forked process!'});
init-ipc.js
exports.initIPC = function (process) {
process.on('message', message => {
if (('event' in message) && typeof message.event === 'string') {
process.emit(message.event, message);
}
});
};
我想知道(因为在官方文档中没有提到这一点)是否有办法从 worker
进程发出事件,这些进程具有与默认事件名称不同的事件名称,即 message,这样我就可以在主进程中设置监听器:
worker.once('someOtherMsgName', fn)
这样我就可以避免实际回调函数中的条件,只匹配监听器以根据消息名称对适当的消息执行回调?
否
"message" 表示 - IPC(进程间通信)收到了新的传入消息。 NodeJS 只有一种在进程之间发送消息的内置方式 - process.send and child_process.send
是
当然你可以使用第三方模块(例如node-ipc)或者让节点以任何你想要的方式解释消息内容:
main.js
const childProcess = require('child_process');
const fork = childProcess.fork(__dirname + '/fork.js');
const initIPC = require('./init-ipc');
initIPC(process);
fork.on('hello', event => {
console.log(event.hello);
});
// Say hello to forked process
fork.send({event: 'hello', hello: 'Hello from main process!'});
fork.js
const initIPC = require('./init-ipc');
initIPC(process);
process.on('hello', event => {
console.log(event.hello);
});
// Say hello to main process
process.send({event: 'hello', hello: 'Hello from forked process!'});
init-ipc.js
exports.initIPC = function (process) {
process.on('message', message => {
if (('event' in message) && typeof message.event === 'string') {
process.emit(message.event, message);
}
});
};