Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从Electron应用程序内部启动和停止节点应用程序_Javascript_Node.js_Electron - Fatal编程技术网

Javascript 从Electron应用程序内部启动和停止节点应用程序

Javascript 从Electron应用程序内部启动和停止节点应用程序,javascript,node.js,electron,Javascript,Node.js,Electron,我正在尝试从我的electron应用程序内部启动和停止另一个node.js应用程序 到目前为止,我已经完成了以下工作,当我运行npm start以启动electron应用程序时,从bot.js启动节点: 在main.js中: var bot = require('./Bot/bot') , server = require("./server"); 在server.js中: require("http").createServer(function (req, res) { res.end("

我正在尝试从我的electron应用程序内部启动和停止另一个node.js应用程序

到目前为止,我已经完成了以下工作,当我运行
npm start
以启动electron应用程序时,从bot.js启动节点:

在main.js中:

var bot = require('./Bot/bot')
, server = require("./server");
在server.js中:

require("http").createServer(function (req, res) {
res.end("Hello from server started by Electron app!");
}).listen(9000)
现在,如果我想从electron应用程序内部停止bot.js上的应用程序(或再次启动它),比如单击按钮,我不知道该怎么做。

Server.close()
我想这就是您要找的
.listen()
返回一个
http.Server
实例,可以在该实例上调用此方法:

const http = require('http');
const server = http.createServer(function (req, res) {
    res.end("Hello from server started by Electron app!");
}).listen(9000);

// To Close:
server.close();
然后可以再次调用server.listen()重新打开连接。请注意,如果在您尝试侦听或不侦听时服务器已打开,并且您尝试将其关闭

有关更多信息,请参阅

即使我没有将.listen()添加到createServer方法的末尾,即使我手动调用.close(),服务器似乎也在运行。有什么想法吗?只是澄清一下,服务器在关闭后仍在响应请求?在进程仍然处于活动状态的情况下,它保持“运行”是正常的,但我认为它不应该响应请求,因此这可能是另一个问题。实际上,由于您没有指定超时,服务器将在关闭它后继续对任何已建立的现有连接(但不会打开任何新连接)进行操作。(即,如果您将clientA连接到服务器,然后关闭服务器,clientA将能够继续连接,但clientB将无法建立新连接)如果您要更改此设置,可以通过在服务器上设置超时,以便所有客户端都必须在x时间后建立新连接感谢后续帮助。最后,我使用一个子进程运行另一个节点应用程序,使用:
var fork=require('child_process')。fork;var child=fork('./Bot/Bot')child.kill('SIGINT')杀死它。我认为createServer()的问题在于它与主Electron应用程序进程位于同一个线程上,因此无法独立终止。