据我所知,Heroku 没有为您提供交流方式,因此您必须自己构建。为了使用 Node 与另一个进程通信,您可能必须手动处理进程的 stdin/out/err,如下所示:
var attachToProcess = function(pid) {
return {
stdin: fs.createWriteStream('/proc/' + pid + '/fd/0'),
stdout: fs.createReadStream('/proc/' + pid + '/fd/1'),
stderr: fs.createReadStream('/proc/' + pid + '/fd/2')
};
};
var pid = fs.readFile('/path/to/worker.pid', 'utf8', function(err, pid) {
if (err) {throw err;}
var worker = attachToProcess(Number(pid));
worker.stdin.write(...);
});
然后,在您的工作进程中,您必须将 pid 存储在该 pid 文件中:
fs.writeFile('/path/to/worker.pid', process.pid, function(err) {
if (err) {throw err;}
});
我实际上还没有测试过这些,所以它可能需要一些工作和构建,但我认为基本的想法很清楚。
编辑
我刚刚注意到您也用“redis”标记了它,并且认为我应该补充一点,您还可以使用 redis pub/sub 在您的各种进程之间进行通信,如node_redis 自述文件中所述。