我有一个在后台运行在我的服务器上的进程。对象像这样导出
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
在两个进程之间进行通信,但这看起来很糟糕。
答案 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接受和处理请求,还是等待命令行中的信息,请查看文件以进行更改,或者您拥有什么。
如果你启动一个完整的独立流程,它将在逻辑上与当前正在运行的流程分开,谢天谢地,否则完全独立的应用程序可能会以非预期的方式相互混淆。