http://www.ayqy.net/blog/nodejs%E8%BF%9B%E7%A8%8B%E9%97%B4%E9%80%9A%E4%BF%A1/#articleHeader8
stdin/stdout
限制, 需要拿到子进程的handle。
完全独立的进程无法通信(无法跨应用、跨机器)
进程之间
// 发
child.stdin.write()
// 收
child.stdout.on('data', chunk => {
//
})
子进程之间
process.stdout.write('写入内容到控制台 stdout');
process.stdin.on('readable', () => {
console.log('读取输入:', process.stdin.read());
});
process.stdin.on('end', () => {
console.log('读取结束');
});
原生IPC
限制, 同上
// 父进程
child.send()
process.on('message')
// 子进程
process.send()
process.on('message')
sockets (通用)
限制, 依赖网络, 无法跨进程,可以跨机器
第三方模块 node-ipc
https://www.npmjs.com/package/node-ipc
message queue(最强大)
既然要通信,场景还复杂,不妨扩展出一层消息中间件,漂亮地解决各种通信问题
中间层(MQ)
第三方模块 rsmq https://www.npmjs.com/package/rsmq
Redis
Redis自带Pub/Sub机制(即发布-订阅模式),适用于简单的通信场景,比如一对一或一对多并且不关注消息可靠性的场景