// import http from "node:http"; import path from "node:path"; import { spawn, ChildProcess } from "node:child_process"; import { BrowserWindow } from "electron"; // import http from "node:http"; class PythonManager { public flaskProcess: ChildProcess | null = null; private intervalId: NodeJS.Timeout | null = null; constructor( private mainWindow: BrowserWindow | null, private url: string, private interval = 5000 ) {} // 启动 Python 服务 public startFlask() { if (this.flaskProcess) { console.log("Flask service is already running."); this.mainWindow?.webContents.send("flask", { running: true }); return; } // 使用 spawn 启动 Flask 服务 this.flaskProcess = spawn(path.join(process.env.VITE_PUBLIC!, "main.exe")); // 实时获取 stdout 日志 this.flaskProcess.stdout?.on("data", (data) => { const message = data.toString(); console.log(`Flask stdout: ${message}`); this.mainWindow?.webContents.send("flask", { stdout: message }); }); // 实时获取 stderr 日志 this.flaskProcess.stderr?.on("data", (data) => { const message = data.toString(); console.error(`Flask stderr: ${message}`); this.mainWindow?.webContents.send("flask-service:response", { stderr: message, }); }); // 监听进程关闭事件 this.flaskProcess.on("close", (code) => { console.log(`Flask process exited with code ${code}`); this.flaskProcess = null; this.mainWindow?.webContents.send("flask-service:response", { exited: true, code, }); }); // 开始轮询服务状态 // this.startCheckingFlaskStatus(); } // 停止 Python 服务 public stopFlask() { if (this.flaskProcess) { this.flaskProcess.kill(); console.log("Flask service stopped."); this.flaskProcess = null; } // 停止轮询 this.stopCheckingFlaskStatus(); } // 检查 Flask 服务状态 // private checkFlaskStatus() { // if (!this.mainWindow) return; // http // .get(this.url, (res) => { // const { statusCode } = res; // this.mainWindow?.webContents.send("flask-check", { // running: statusCode === 200, // }); // }) // .on("error", (err) => { // console.error(`Error checking Flask service: ${err.message}`); // this.mainWindow?.webContents.send("flask-check", { // running: false, // }); // }); // } // 开始轮询 Flask 服务状态 // private startCheckingFlaskStatus() { // if (this.intervalId) { // console.log("Already checking Flask status."); // return; // } // this.intervalId = setInterval(() => this.checkFlaskStatus(), this.interval); // } // 停止轮询 Flask 服务状态 private stopCheckingFlaskStatus() { if (this.intervalId) { clearInterval(this.intervalId); this.intervalId = null; } } } export default PythonManager;