你如何让多个node.js命令行进程相互交谈?
我正在搞乱https://github.com/nodejitsu/forever ,并且一般都想知道如何以及如何将消息从一个命令行进程发送到另一个命令行进程。
在Web上,您使用HTTP来回发送请求。 但是我从来没有用命令行来做过这种事情。 我知道它可能与端口和套接字,但不知道从哪里开始…
这里是基本的设置:
你有一个mainProcess.js
和childProcess.js
,它们是独立于命令行调用的。 不知何故,每当childProcess.js
发送消息时, mainProcess.js
必须运行callback。
./parent.js
:
var forever = require("forever"); var mainProcess = forever.start(["node", "mainProcess.js"], {max: 1, silent: true}); mainProcess.on("stdout", function(data) { console.log(data.toString().trim()); }); mainProcess.on("stderr", function(data) { console.log(data.toString().trim()); }); forever.startServer(mainProcess);
./child.js
:
var forever = require("forever"); var childProcess = forever.start(["node", "childProcess.js"], {max: 1, silent: true}); childProcess.on("stdout", function(data) { // *send to parent process* }); forever.startServer(childProcess);
./childProcess.js
console.log("A Message from a child process!")
一个办法是parsing日志文件,但是看起来好像会变得很乱。 看起来好像有一些协议可以让我直接从一个进程发送消息到另一个进程,就像使用HTTP到一个url一样。 你会怎么做到这一点?
在node.js中执行IPC可以通过多种方式来完成。 内置的,有child_process.fork()
API: http : child_process.fork()
在forever
,有一个选项, .fork
将永远告诉使用child_process.fork()
API而不是child_process.spawn()
:
var child = forever.start('script-using-fork-api.js', { max: 1, fork: true, silent: true });
如果你正在寻找通过networking结算的IPC机制: