frpc.ts
891 字节
export function createFrpc(configPath: string) {
const { spawn } = require("child_process")
const path = require('path')
console.log("启动 frpc ...")
// 1. 启动 frpc 进程
const frpc = spawn(path.join(__dirname, '..', '..', 'frp', 'frpc'), ["-c", configPath], {
stdio: "inherit", // 共享输入输出
});
// 2. 监听 Node.js 退出事件并关闭 frpc
function cleanup() {
if (!frpc.killed) {
frpc.kill("SIGTERM"); // 发送终止信号
}
}
// 捕获各种退出信号
process.on("exit", cleanup);
process.on("SIGINT", () => {
cleanup();
process.exit();
});
process.on("SIGTERM", () => {
cleanup();
process.exit();
});
// 3. 监听 frpc 的退出
frpc.on("exit", (code) => {
console.log(`frpc 已退出,代码: ${code}`);
});
}