Обеспечение запуска только одного экземпляра приложения 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'
});

Если я правильно понимаю его исходный код, он реализует блокировку с помощью сокета: если он может подключиться к сокету, то приложение уже запущено. Если он не может подключиться, он создает сокет.

Другие вопросы по тегам