Pi 上的 Node JS 零多个进程

Node JS on a Pi Zero multiple processes

我在 pi 零上使用 Node 运行 raspbian stretch lite。

我基本上想要有两个进程运行,一个进程是保持与服务器的连接打开以推送和接收离线状态等消息,另一个是扫描iBeacons。

创建一个项目并拥有两个 JS 文件并使用 PM2 之类的工具分别启动它们是否是最佳做法?或者有两个完全独立的项目会更好吗?一个过程依赖于另一个过程,因为我将更新信标以通过打开的连接进行扫描。

如果您运行将应用程序作为两个单独的进程,PM2 allows you to control the startup of the two simultaneously through a JavaScript object, JSON, or YAML configuration file

例如,运行 分别是 worker.jsapi.js 脚本:

module.exports = {
  apps : [{
    name        : "worker",
    script      : "./worker.js",
    watch       : true
  }, {
    name       : "api-app",
    script     : "./api.js",
    instances  : 4,
    exec_mode  : "cluster"
  }]
}

从这个意义上说,您可以将它们作为一个单独的项目,然后使用带有 PM2 的单个配置文件一起启动它们。

如果您的应用程序复杂到将它们分开可能更好的地步,您也可以稍后再做。

由于您可能会收到检测到的信标的回调,而且频率不会很高,所以我会把它作为一个过程来实现。信标的棘手之处在于处理避免 "stuttering" 的 entering/exiting 区域,因此最佳情况下,每个检测到的计时器都有一个计时器来跟踪 entering/exiting far/near/immediate,如果您现在需要这样的粒度。