gpt4 book ai didi

node.js - 如何通知Windows服务已经启动?

转载 作者:太空宇宙 更新时间:2023-11-03 22:22:40 24 4
gpt4 key购买 nike

我正在运行一个使用 pkg npm 模块打包为 exe 二进制文件的 Nodejs HTTP 服务器。我需要将它作为 Windows 服务运行。正常启动时效果很好。但如果我将它作为 Windows 服务运行,会发生以下情况:

  • 我启动服务。
  • Windows 尝试启动该服务。
  • 在此期间,HTTP 服务器可以访问并且工作正常
  • Windows 服务在 30 秒后超时并出现错误:“服务未及时响应启动或控制请求。”

在我看来,我必须以某种方式通知 Windows 我的服务已启动,让我保持打开状态。

我怎样才能做到这一点?

最佳答案

常规应用程序无法作为 Windows 服务运行。如the reference states ,实现应满足一定的要求,

the interface requirements of the service control manager (SCM) that a service program must include:

Service Entry Point

Service ServiceMain Function

Service Control Handler Function

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
}

关于node.js - 如何通知Windows服务已经启动?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52229440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com