从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的命令提示符窗口
- 执行
nodevars.bat
文件 SendKeys
到新的进程控制台窗口以启动服务器
这种方法感觉有点脆弱。不能保证目标用户会在同一个地方安装Node.js,而且向进程发送密钥可能不是一个理想的解决方案。
另一种方法可能是:
- 编写一个执行
nodevars.bat
的批处理文件 - 从C#应用程序执行批处理文件
这似乎是一个更好的方法。然而,这里唯一的问题是nodevars.bat
在一个新的控制台窗口中打开。
那么,对于这个问题,有没有一种方法可以使用node.js安装中内置的功能启动node.js服务器脚本?也许向node.exe
发送自变量?
如果要为多个用户提供服务,即作为服务器,那么您可以使用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服务包。