将变量传递给正在运行的node.js程序

时间:2014-01-29 19:33:37

标签: javascript node.js object socket.io

我有一个在后台运行在我的服务器上的进程。对象像这样导出

module.exports = new Application()

因为我只想要一个对象的实例存在。

然后我有一个单独的进程尝试调用process的原型函数Application。它看起来像这样

var app = require('./Application.js');

app.process(process.argv[2]);

并说该文件名为process.js。然后我会打电话给node process.js thing_to_pass

麻烦的是,每次我这样做都会重新实例化application,导致我不寻找的行为。

我该如何解决这个问题?我在考虑使用socket.io在两个进程之间进行通信,但这看起来很糟糕。

3 个答案:

答案 0 :(得分:3)

你无法沿着你想要下山的路走下去。因为您有两个不同的流程,所以您将创建两个不同的Application实例。通过socket.io将消息从一个进程发送到另一个进程并不是那种hackish imo,绝对值得考虑。

您还可以考虑使用child_process并使用kill http://nodejs.org/api/process.html

发送消息

答案 1 :(得分:0)

如果您使用的是Linux,我建议您使用UNIX域套接字。

答案 2 :(得分:0)

如果您希望正在运行的进程接收新数据,则必须以某种方式侦听该数据。无论您是设置HTTP服务器并使用新数据或socket.io接受和处理请求,还是等待命令行中的信息,请查看文件以进行更改,或者您拥有什么。

如果你启动一个完整的独立流程,它将在逻辑上与当前正在运行的流程分开,谢天谢地,否则完全独立的应用程序可能会以非预期的方式相互混淆。