Обеспечение запуска только одного экземпляра приложения nodejs
Это элегантный способ убедиться, что запущен только один экземпляр приложения nodejs? Я пытался использовать pidlock npm, однако, похоже, что он работает только на *nix системах. Возможно ли это с помощью мьютекса? Спасибо
0 ответов
Я только что нашел 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'
});
Если я правильно понимаю его исходный код, он реализует блокировку с помощью сокета: если он может подключиться к сокету, то приложение уже запущено. Если он не может подключиться, он создает сокет.