Как сообщить Windows, что служба запущена? - PullRequest
0 голосов
/ 07 сентября 2018

Я использую HTTP-сервер nodejs, упакованный как исполняемый файл exe, с модулем pkg npm.Мне нужно запустить его как службу Windows.Работает отлично, когда запускается нормально.Но вот что происходит, если я запускаю его как службу Windows:

  • Я запускаю службу.
  • Windows пытается запустить службу.
  • В течение этого времени, HTTP-сервер доступен и отлично работает
  • Службы Windows истекают с ошибкой через 30 секунд: «Служба не ответила на запрос запуска или управления своевременно».

Мне кажется, что я как-то должен сообщить Windows, что мой сервис запущен, позвольте мне просто оставаться открытым.

Как я могу это сделать?

1 Ответ

0 голосов
/ 08 сентября 2018

Обычное приложение не может работать в качестве службы Windows. Так как указывает состояние , реализация должна удовлетворять определенным требованиям

требования к интерфейсу диспетчера управления службами (SCM), которые должна содержать служебная программа:

Точка входа в службу

Сервис ServiceMain Функция

Функция обработчика сервисного управления

Существует пакет os-service, который позволяет установить службу, запускающую скрипт Node.js. Текущий скрипт считается точкой входа по умолчанию:

const osService = require('os-service');

const [action] = process.argv.slice(2);

function errorHandler(err) {
  if (!err) return;
  console.error(err);
  process.exit(1);
}

if (action === '--install') {
  osService.add('Foo', errorHandler);
} else if (action === '--uninstall') {
  osService.remove('Foo', errorHandler);
} else {
  // report service as running
  osService.run('Foo', () => {
    osService.stop();
  });

  // app entry point
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...