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。
完全独立的进程无法通信(无法跨应用、跨机器)

进程之间

  1. // 发
  2. child.stdin.write()
  3. // 收
  4. child.stdout.on('data', chunk => {
  5. //
  6. })

子进程之间

  1. process.stdout.write('写入内容到控制台 stdout');
  2. process.stdin.on('readable', () => {
  3. console.log('读取输入:', process.stdin.read());
  4. });
  5. process.stdin.on('end', () => {
  6. console.log('读取结束');
  7. });

原生IPC

限制, 同上

  1. // 父进程
  2. child.send()
  3. process.on('message')
  4. // 子进程
  5. process.send()
  6. 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机制(即发布-订阅模式),适用于简单的通信场景,比如一对一或一对多并且不关注消息可靠性的场景