frpc.ts
843 字节
export function createFrpc(frpcPath: string, configPath: string) {
const { spawn } = require("child_process");
console.log("启动 frpc ...");
// 1. 启动 frpc 进程
const frpc = spawn(frpcPath, ["-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}`);
});
}