mirror of
https://github.com/HugoAura/Seewo-HugoAura.git
synced 2026-06-20 23:14:28 +08:00
[🤯 Refactor] Use standalone window for WebSocket connections
1. [-] 删除了对于 desktopAssistant 的 Hook 逻辑 2. [/] 现在不再使用 desktopAssistant 保活 WS 连接, 而是用一个单独的不可见窗口处理 WS (#25)
This commit is contained in:
@@ -418,7 +418,7 @@ const applyPlsIpcHandler = (ipcMain) => {
|
||||
*/
|
||||
(_event, arg) => {
|
||||
ipcMain.send(
|
||||
"desktopAssistant",
|
||||
"auraWsKeepAlive",
|
||||
`${methodBase}.ws.post.onReqSendMsg`,
|
||||
arg
|
||||
);
|
||||
@@ -568,7 +568,7 @@ const applyPlsIpcHandler = (ipcMain) => {
|
||||
status: "Already",
|
||||
};
|
||||
} else {
|
||||
ipcMain.send("desktopAssistant", `${methodBase}.retryPlsConnect`, arg);
|
||||
ipcMain.send("auraWsKeepAlive", `${methodBase}.retryPlsConnect`, arg);
|
||||
|
||||
return {
|
||||
success: true,
|
||||
|
||||
@@ -14,7 +14,7 @@ class WindowHooksManager {
|
||||
|
||||
const hooksPath = path.join(__dirname, "../../../aura/mainProcess/hooks");
|
||||
|
||||
/** @type {import("../../types/main/core").HooksMap} */
|
||||
/** @type {import("../../types/main/core").UIHooksMap} */
|
||||
const hooks = new Map();
|
||||
|
||||
try {
|
||||
@@ -55,6 +55,9 @@ class WindowHooksManager {
|
||||
browserWindowInstance
|
||||
) {
|
||||
const stripWindowName = windowName.split("_")[0];
|
||||
|
||||
if (!global.__HUGO_AURA__.windowHooks) return;
|
||||
|
||||
if (!global.__HUGO_AURA__.windowHooks.has(stripWindowName)) {
|
||||
console.log(
|
||||
`[HugoAura / Init / WDH] Window ${windowName} has no corresponding main process hooks, ignoring...`
|
||||
|
||||
2
src/aura/types/render/global.d.ts
vendored
2
src/aura/types/render/global.d.ts
vendored
@@ -8,7 +8,7 @@ interface AssistantHugoAuraGlobal extends HugoAuraGlobal {
|
||||
plsSettings: Record<any, any>;
|
||||
}
|
||||
|
||||
interface DesktopAssistantHugoAuraGlobal extends HugoAuraGlobal {
|
||||
interface AuraWSKeepAliveWindowHugoAuraGlobal extends HugoAuraGlobal {
|
||||
plsWs: WebSocket | null;
|
||||
plsStats: PLSStatus;
|
||||
}
|
||||
|
||||
@@ -1,15 +0,0 @@
|
||||
// @ts-check
|
||||
|
||||
/**
|
||||
* @type {import("../../types/render/uiHook").UIHookConfig}
|
||||
*/
|
||||
const def = {
|
||||
targets: {},
|
||||
globalStyles: ["ui/css/global.css"],
|
||||
globalJS: ["ui/js/global.js", "ui/js/plsConnectionManager.js"],
|
||||
onLoaded: `
|
||||
console.log('[HugoAura / UI / Hooks / Desktop Assistant] Page loaded.');
|
||||
`,
|
||||
};
|
||||
|
||||
module.exports = def;
|
||||
@@ -1,5 +1,12 @@
|
||||
// @ts-check
|
||||
(() => {
|
||||
if (!global.__HUGO_AURA__)
|
||||
global.__HUGO_AURA__ = {
|
||||
configInit: true,
|
||||
auraDir: "",
|
||||
version: "",
|
||||
};
|
||||
|
||||
if (!global.__HUGO_AURA__.plsStats)
|
||||
global.__HUGO_AURA__.plsStats = {
|
||||
installed: false,
|
||||
@@ -12,8 +19,8 @@
|
||||
};
|
||||
|
||||
const IPC_METHOD_BASE = "$aura.pls";
|
||||
const REQUIRE_BASE = "../../aura/ui";
|
||||
const __SCOPE = "desktopAssistant";
|
||||
const REQUIRE_BASE = "../../..";
|
||||
const __SCOPE = "auraWsKeepAlive";
|
||||
|
||||
const PLS_REG_PATH = "ProxyLayerServices";
|
||||
|
||||
@@ -312,7 +319,7 @@
|
||||
const onSetup = () => {
|
||||
if (!global.ipcRenderer) {
|
||||
// @ts-ignore
|
||||
global.ipcRenderer = require("electron").global.ipcRenderer;
|
||||
global.ipcRenderer = require("electron").ipcRenderer;
|
||||
}
|
||||
|
||||
initPlsConnection();
|
||||
|
||||
16
src/aura/ui/pages/windows/auraWsKeepAlive/index.html
Normal file
16
src/aura/ui/pages/windows/auraWsKeepAlive/index.html
Normal file
@@ -0,0 +1,16 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Aura WebSocket KeepAlive Window</title>
|
||||
<style>
|
||||
:root {
|
||||
opacity: 0;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
let global = window;
|
||||
</script>
|
||||
<script src="../../../js/plsConnectionManager.js"></script>
|
||||
</head>
|
||||
<body></body>
|
||||
</html>
|
||||
39
src/aura/utils/pls.js
Normal file
39
src/aura/utils/pls.js
Normal file
@@ -0,0 +1,39 @@
|
||||
// @ts-check
|
||||
|
||||
/**
|
||||
* @param {Electron} electron
|
||||
*/
|
||||
const createWsWindow = (electron) => {
|
||||
const path = require("path");
|
||||
const { BrowserWindow } = electron;
|
||||
const window = new BrowserWindow({
|
||||
width: 0,
|
||||
height: 0,
|
||||
frame: false,
|
||||
skipTaskbar: true,
|
||||
transparent: true,
|
||||
alwaysOnTop: true,
|
||||
webPreferences: {
|
||||
nodeIntegration: true,
|
||||
contextIsolation: false,
|
||||
devTools: true,
|
||||
},
|
||||
});
|
||||
|
||||
window.setIgnoreMouseEvents(true);
|
||||
window.loadFile(
|
||||
path.join(
|
||||
__dirname,
|
||||
"..",
|
||||
"ui",
|
||||
"pages",
|
||||
"windows",
|
||||
"auraWsKeepAlive",
|
||||
"index.html"
|
||||
)
|
||||
);
|
||||
|
||||
return window;
|
||||
};
|
||||
|
||||
module.exports = { createWsWindow };
|
||||
@@ -47,6 +47,7 @@ const NetworkHook = require("../aura/init/rendererHook/networkHook");
|
||||
const ConfigManager = require("../aura/init/shared/configManager");
|
||||
const RegistryManager = require("../aura/init/shared/registryManager");
|
||||
const { buildIpcMain } = require("../aura/init/main/ipcHandler");
|
||||
const plsUtils = require("../aura/utils/pls");
|
||||
|
||||
const { initLogger } = require("../aura/init/main/logger");
|
||||
|
||||
@@ -97,7 +98,10 @@ const launcher = ({ central, windowName, config }) => {
|
||||
app.exit(0);
|
||||
};
|
||||
|
||||
global.__HUGO_AURA__.auraDir = path.join(getUserDocumentsDirPath(), "HugoAura");
|
||||
global.__HUGO_AURA__.auraDir = path.join(
|
||||
getUserDocumentsDirPath(),
|
||||
"HugoAura"
|
||||
);
|
||||
|
||||
// >>> Init Logger <<< //
|
||||
initLogger(windowName);
|
||||
@@ -146,6 +150,13 @@ const launcher = ({ central, windowName, config }) => {
|
||||
config.canOpenDevTool = true;
|
||||
}
|
||||
|
||||
// >>> Create WebSocket KeepAlive Window <<< //
|
||||
if (!global.__HUGO_AURA__.hookedWindows?.has("auraWsKeepAlive")) {
|
||||
const wsKaWin = plsUtils.createWsWindow(electron);
|
||||
// @ts-expect-error
|
||||
global.__HUGO_AURA__.hookedWindows.set("auraWsKeepAlive", wsKaWin);
|
||||
}
|
||||
|
||||
// >>> Listeners <<< //
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user