从C#应用程序启动Node.js服务器

本文关键字:js 服务器 Node 启动 应用程序 | 更新日期: 2023-09-27 18:29:04

我需要从C#应用程序启动Node.js服务器,这就像在Node.js控制台中运行server.js脚本一样简单。然而,我并不完全确定如何实现这一目标。

以下是我迄今为止所研究的内容:

在Node.js安装中,有一个名为C:'Program Files (x86)'nodejs'nodevars.bat的文件,这是Node.js的命令提示符窗口

  1. 执行nodevars.bat文件
  2. SendKeys到新的进程控制台窗口以启动服务器

这种方法感觉有点脆弱。不能保证目标用户会在同一个地方安装Node.js,而且向进程发送密钥可能不是一个理想的解决方案。

另一种方法可能是:

  1. 编写一个执行nodevars.bat的批处理文件
  2. 从C#应用程序执行批处理文件

这似乎是一个更好的方法。然而,这里唯一的问题是nodevars.bat在一个新的控制台窗口中打开。

那么,对于这个问题,有没有一种方法可以使用node.js安装中内置的功能启动node.js服务器脚本?也许向node.exe发送自变量?

从C#应用程序启动Node.js服务器

如果要为多个用户提供服务,即作为服务器,那么您可以使用os服务包,并安装Windows服务。然后,您可以使用标准的API启动和停止服务。

如果您要将服务器作为"单一用途"服务器启动,即只为当前用户服务,那么操作系统服务是错误的方法。(通常,使用此方法时,您将为要使用的服务指定一个唯一端口,该端口将仅由您的应用程序使用)。

要从C#启动批处理文件或其他控制台应用程序,而不显示控制台窗口,请使用标准方法,但一定要指定:

ProcessStartInfo psi = new ProcessStartInfo();
psi.UseShellExecute = false;   // This is important
psi.CreateNoWindow = true;     // This is what hides the command window.
psi.FileName = @"c:'Path'to'your'batchfile.cmd";
psi.Arguments = @"-any -arguments -go Here";   // Probably you will pass the port number here
using(var process = Process.Start(psi)){
    // Do something with process if you want.
}

有一些不同的,但我建议使用os服务包。