确保只运行nodejs应用程序的单个实例

时间:2015-11-01 08:10:44

标签: node.js mutex single-instance

这是一种优雅的方法来确保只运行一个nodejs应用程序实例吗? 我尝试使用pidlock npm,但是,它似乎只适用于* nix系统。 是否可以使用互斥锁? 感谢

1 个答案:

答案 0 :(得分:1)

我刚刚找到了single-instance库,该库适用于所有平台。我可以确认它在Windows上能很好地工作。

您可以通过npm i single-instance进行安装,并且需要这样包装应用程序代码:

const SingleInstance = require('single-instance');
const locker = new SingleInstance('my-app-name');
locker.lock().then(() => {
    // Your application code goes here
}).catch(err => {
    // This block will be executed if the app is already running
    console.log(err); // it will print out 'An application is already running'
});

如果我正确理解其源代码,它将使用套接字来实现锁定:如果可以连接到套接字,则表明该应用程序已在运行。如果无法连接,则会创建套接字。