diff --git a/src/main/config/controledMihomo.ts b/src/main/config/controledMihomo.ts index 15bd2c9..dff9c71 100644 --- a/src/main/config/controledMihomo.ts +++ b/src/main/config/controledMihomo.ts @@ -1,7 +1,7 @@ import { controledMihomoConfigPath } from '../utils/dirs' import { readFile, writeFile } from 'fs/promises' import yaml from 'yaml' -import { getAxios, startMihomoMemory, startMihomoTraffic } from '../core/mihomoApi' +import { getAxios } from '../core/mihomoApi' import { generateProfile } from '../core/factory' import { getAppConfig } from './app' import { defaultControledMihomoConfig } from '../utils/template' @@ -50,8 +50,6 @@ export async function patchControledMihomoConfig(patch: Partial): if (patch['external-controller'] || patch.secret) { await getAxios(true) - await startMihomoMemory() - await startMihomoTraffic() } await generateProfile() await writeFile(controledMihomoConfigPath(), yaml.stringify(controledMihomoConfig), 'utf-8') diff --git a/src/main/core/manager.ts b/src/main/core/manager.ts index a5c2e14..b859ddb 100644 --- a/src/main/core/manager.ts +++ b/src/main/core/manager.ts @@ -10,7 +10,12 @@ import { import { generateProfile } from './factory' import { getAppConfig, getControledMihomoConfig, patchAppConfig } from '../config' import { dialog, safeStorage } from 'electron' -import { pauseWebsockets, startMihomoTraffic } from './mihomoApi' +import { + startMihomoTraffic, + startMihomoConnections, + startMihomoLogs, + startMihomoMemory +} from './mihomoApi' import chokidar from 'chokidar' import { writeFile } from 'fs/promises' import { promisify } from 'util' @@ -96,6 +101,9 @@ export async function startCore(): Promise[]> { }) ]) await startMihomoTraffic() + await startMihomoConnections() + await startMihomoLogs() + await startMihomoMemory() retry = 10 } }) @@ -121,9 +129,7 @@ export async function stopCore(force = false): Promise { export async function restartCore(): Promise { try { - const recover = pauseWebsockets() await startCore() - recover() } catch (e) { dialog.showErrorBox('内核启动出错', `${e}`) } diff --git a/src/main/core/mihomoApi.ts b/src/main/core/mihomoApi.ts index ef965de..0b85a1e 100644 --- a/src/main/core/mihomoApi.ts +++ b/src/main/core/mihomoApi.ts @@ -347,24 +347,3 @@ const mihomoConnections = async (): Promise => { } } } - -export const pauseWebsockets = () => { - const recoverList: (() => void)[] = [] - // Traffic 内核启动时始终开启 - stopMihomoTraffic() - if (mihomoMemoryWs) { - stopMihomoMemory() - recoverList.push(startMihomoMemory) - } - if (mihomoLogsWs) { - stopMihomoLogs() - recoverList.push(startMihomoLogs) - } - if (mihomoConnectionsWs) { - stopMihomoConnections() - recoverList.push(startMihomoConnections) - } - return (): void => { - recoverList.forEach((recover) => recover()) - } -} diff --git a/src/main/index.ts b/src/main/index.ts index ee944ed..2a962c9 100644 --- a/src/main/index.ts +++ b/src/main/index.ts @@ -2,7 +2,6 @@ import { electronApp, optimizer, is } from '@electron-toolkit/utils' import { registerIpcMainHandlers } from './utils/ipc' import windowStateKeeper from 'electron-window-state' import { app, shell, BrowserWindow, Menu, dialog, Notification } from 'electron' -import { pauseWebsockets, startMihomoMemory, stopMihomoMemory } from './core/mihomoApi' import { addProfileItem, getAppConfig } from './config' import { startCore, stopCore } from './core/manager' import { triggerSysProxy } from './sys/sysproxy' @@ -73,7 +72,6 @@ app.on('window-all-closed', (e) => { }) app.on('before-quit', async () => { - pauseWebsockets() await stopCore() triggerSysProxy(false) app.exit() @@ -186,13 +184,8 @@ export async function createWindow(): Promise { mainWindow?.webContents.reload() }) - mainWindow.on('show', () => { - startMihomoMemory() - }) - mainWindow.on('close', (event) => { event.preventDefault() - stopMihomoMemory() mainWindow?.hide() }) diff --git a/src/main/utils/ipc.ts b/src/main/utils/ipc.ts index e9d35b7..f46ea66 100644 --- a/src/main/utils/ipc.ts +++ b/src/main/utils/ipc.ts @@ -15,11 +15,7 @@ import { mihomoUpgrade, mihomoUpgradeGeo, mihomoVersion, - patchMihomoConfig, - startMihomoConnections, - startMihomoLogs, - stopMihomoConnections, - stopMihomoLogs + patchMihomoConfig } from '../core/mihomoApi' import { checkAutoRun, disableAutoRun, enableAutoRun } from '../sys/autoRun' import { @@ -112,10 +108,6 @@ export function registerIpcMainHandlers(): void { ipcMain.handle('mihomoGroupDelay', (_e, group, url) => ipcErrorWrapper(mihomoGroupDelay)(group, url) ) - ipcMain.handle('startMihomoLogs', ipcErrorWrapper(startMihomoLogs)) - ipcMain.handle('stopMihomoLogs', stopMihomoLogs) - ipcMain.handle('startMihomoConnections', ipcErrorWrapper(startMihomoConnections)) - ipcMain.handle('stopMihomoConnections', stopMihomoConnections) ipcMain.handle('patchMihomoConfig', (_e, patch) => ipcErrorWrapper(patchMihomoConfig)(patch)) ipcMain.handle('checkAutoRun', ipcErrorWrapper(checkAutoRun)) ipcMain.handle('enableAutoRun', ipcErrorWrapper(enableAutoRun)) diff --git a/src/renderer/src/pages/connections.tsx b/src/renderer/src/pages/connections.tsx index 279a98a..f2a49ee 100644 --- a/src/renderer/src/pages/connections.tsx +++ b/src/renderer/src/pages/connections.tsx @@ -1,10 +1,5 @@ import BasePage from '@renderer/components/base/base-page' -import { - mihomoCloseAllConnections, - mihomoCloseConnection, - startMihomoConnections, - stopMihomoConnections -} from '@renderer/utils/ipc' +import { mihomoCloseAllConnections, mihomoCloseConnection } from '@renderer/utils/ipc' import { useEffect, useMemo, useState } from 'react' import { Badge, Button, Divider, Input, Select, SelectItem } from '@nextui-org/react' import { calcTraffic } from '@renderer/utils/calc' @@ -66,7 +61,6 @@ const Connections: React.FC = () => { }, [connections, filter]) useEffect(() => { - startMihomoConnections() window.electron.ipcRenderer.on('mihomoConnections', (_e, info: IMihomoConnectionsInfo) => { setConnectionsInfo(info) const newConns: IMihomoConnectionDetail[] = [] @@ -84,7 +78,6 @@ const Connections: React.FC = () => { }) return (): void => { - stopMihomoConnections() window.electron.ipcRenderer.removeAllListeners('mihomoConnections') } }, []) diff --git a/src/renderer/src/pages/logs.tsx b/src/renderer/src/pages/logs.tsx index 42a25ee..ff0545e 100644 --- a/src/renderer/src/pages/logs.tsx +++ b/src/renderer/src/pages/logs.tsx @@ -1,5 +1,4 @@ import BasePage from '@renderer/components/base/base-page' -import { startMihomoLogs, stopMihomoLogs } from '@renderer/utils/ipc' import LogItem from '@renderer/components/logs/log-item' import { useEffect, useMemo, useRef, useState } from 'react' import { Button, Divider, Input } from '@nextui-org/react' @@ -29,7 +28,6 @@ const Logs: React.FC = () => { }, [filteredLogs, trace]) useEffect(() => { - startMihomoLogs() window.electron.ipcRenderer.on('mihomoLogs', (_e, log: IMihomoLogInfo) => { log.time = new Date().toLocaleString() setLogs((prevLogs) => { @@ -38,7 +36,6 @@ const Logs: React.FC = () => { }) return (): void => { - stopMihomoLogs() window.electron.ipcRenderer.removeAllListeners('mihomoLogs') } }, []) diff --git a/src/renderer/src/utils/ipc.ts b/src/renderer/src/utils/ipc.ts index 04f4f0c..d5dc8b5 100644 --- a/src/renderer/src/utils/ipc.ts +++ b/src/renderer/src/utils/ipc.ts @@ -75,22 +75,6 @@ export async function mihomoGroupDelay(group: string, url?: string): Promise { - return ipcErrorWrapper(await window.electron.ipcRenderer.invoke('startMihomoLogs')) -} - -export async function stopMihomoLogs(): Promise { - return ipcErrorWrapper(await window.electron.ipcRenderer.invoke('stopMihomoLogs')) -} - -export async function startMihomoConnections(): Promise { - return ipcErrorWrapper(await window.electron.ipcRenderer.invoke('startMihomoConnections')) -} - -export async function stopMihomoConnections(): Promise { - return ipcErrorWrapper(await window.electron.ipcRenderer.invoke('stopMihomoConnections')) -} - export async function patchMihomoConfig(patch: Partial): Promise { return ipcErrorWrapper(await window.electron.ipcRenderer.invoke('patchMihomoConfig', patch)) }