作为我要实现的目标的示例,请考虑从终端启动 VS Code。 code <file-name>
如果不只是运行,命令会打开一个 vs 代码实例,否则会告诉它打开一个文件。此外,一旦打开,用户可以再次将终端 session 用于其他任务(就像进程被拒绝一样)。
我的脚本需要以相同的方式与我的 Electron 应用程序交互,唯一的区别是我的应用程序将在托盘中,而在扩展坞中不可见。
.
解决方案只需要在linux上工作
最佳答案
使用 unix 套接字服务器进行进程间通信。
在 Electron
const handleIpc = (conn) => {
conn.setEncoding('utf8');
conn.on('data',(line) => {
let args = line.split(' ');
switch(args[0]) {
case 'hey':
conn.write('whatsup\n');
break;
default: conn.write('new phone who this?\n');
}
conn.end();
})
}
const server = net.createServer(handleIpc);
server.listen('/tmp/my-app.sock');
那么你的 CLI 是:#!/usr/bin/node
const net = require('net');
let args = process.argv;
args.shift(); // Drop /usr/bin/node
args.shift(); // Drop script path
let line = args.join(' ');
net.connect('/tmp/my-app.sock',(conn)=>{
conn.setEncoding('utf8');
conn.on('data',(response)=>{
console.log(response);
process.exit(0);
});
conn.write(line+'\n');
}).on('error',(err)=>{
console.error(err);
process.exit(1);
});
关于javascript - nodeJS - 通过 CLI 与后台运行的 Electron 应用程序通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67850893/