From 3d869643b476cc65ee7b8ddd998fe2ecf28c9092 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=8E=8B=E4=B8=80=E4=B9=8B?= Date: Thu, 13 Feb 2025 18:04:34 +0800 Subject: [PATCH] aa --- src/app/service/service_worker/gm_api.ts | 9 +++++---- src/app/service/service_worker/index.ts | 5 +---- src/app/service/service_worker/runtime.ts | 4 +++- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/app/service/service_worker/gm_api.ts b/src/app/service/service_worker/gm_api.ts index 5f1b4e7..ac0af6b 100644 --- a/src/app/service/service_worker/gm_api.ts +++ b/src/app/service/service_worker/gm_api.ts @@ -4,6 +4,7 @@ import { Script, ScriptDAO } from "@App/app/repo/scripts"; import { Group, MessageConnect, MessageSender } from "@Packages/message/server"; import { ValueService } from "@App/app/service/service_worker/value"; import PermissionVerify from "./permission_verify"; +import { ServiceWorkerMessageSend } from "@Packages/message/window_message"; // GMApi,处理脚本的GM API调用请求 @@ -30,6 +31,7 @@ export default class GMApi { constructor( private group: Group, + private sender: ServiceWorkerMessageSend, private value: ValueService ) { this.logger = LoggerCore.logger().with({ service: "runtime/gm_api" }); @@ -79,7 +81,7 @@ export default class GMApi { console.log("xml request", request, con); // 先处理unsafe hearder // 再发送到offscreen, 处理请求 - sendMessageToOffscreen("offscreen/gmApi/requestXhr", request.params); + sendMessageToOffscreen(this.sender, "offscreen/gmApi/requestXhr", request.params); } start() { @@ -87,12 +89,11 @@ export default class GMApi { } } -export async function sendMessageToOffscreen(action: string, data?: any) { +export async function sendMessageToOffscreen(sender: ServiceWorkerMessageSend, action: string, data?: any) { // service_worker和offscreen同时监听消息,会导致消息被两边同时接收,但是返回结果时会产生问题,导致报错 // 不进行监听的话又无法从service_worker主动发送消息 // 所以这里通过clients.matchAll()获取到所有的client,然后通过postMessage发送消息 - const list = await clients.matchAll({ includeUncontrolled: true, type: "window" }); - list[0].postMessage({ + sender.sendMessage({ type: "sendMessage", data: { action, data }, }); diff --git a/src/app/service/service_worker/index.ts b/src/app/service/service_worker/index.ts index 44a6b9d..9d0973e 100644 --- a/src/app/service/service_worker/index.ts +++ b/src/app/service/service_worker/index.ts @@ -6,7 +6,6 @@ import { ResourceService } from "./resource"; import { ValueService } from "./value"; import { RuntimeService } from "./runtime"; import { ServiceWorkerMessageSend } from "@Packages/message/window_message"; -import { sendMessageToOffscreen } from "./gm_api"; export type InstallSource = "user" | "system" | "sync" | "subscribe" | "vscode"; @@ -22,10 +21,8 @@ export default class ServiceWorkerManager { const group = this.api.group("serviceWorker"); group.on("preparationOffscreen", async () => { // 准备好环境 - sendMessageToOffscreen("aa", "aa"); await this.sender.init(); this.mq.emit("preparationOffscreen", {}); - this.sender.sendMessage("test"); }); const resource = new ResourceService(group.group("resource"), this.mq); @@ -34,7 +31,7 @@ export default class ServiceWorkerManager { value.init(); const script = new ScriptService(group.group("script"), this.mq, value, resource); script.init(); - const runtime = new RuntimeService(group.group("runtime"), this.mq, value); + const runtime = new RuntimeService(group.group("runtime"), this.sender, this.mq, value); runtime.init(); // 测试xhr diff --git a/src/app/service/service_worker/runtime.ts b/src/app/service/service_worker/runtime.ts index 60350d7..ee85647 100644 --- a/src/app/service/service_worker/runtime.ts +++ b/src/app/service/service_worker/runtime.ts @@ -4,12 +4,14 @@ import { Group } from "@Packages/message/server"; import { Script, SCRIPT_STATUS_ENABLE, SCRIPT_TYPE_NORMAL, ScriptAndCode, ScriptDAO } from "@App/app/repo/scripts"; import { ValueService } from "./value"; import GMApi from "./gm_api"; +import { ServiceWorkerMessageSend } from "@Packages/message/window_message"; export class RuntimeService { scriptDAO: ScriptDAO = new ScriptDAO(); constructor( private group: Group, + private sender: ServiceWorkerMessageSend, private mq: MessageQueue, private value: ValueService ) {} @@ -53,7 +55,7 @@ export class RuntimeService { }); // 启动gm api - const gmApi = new GMApi(this.group, this.value); + const gmApi = new GMApi(this.group, this.sender, this.value); gmApi.start(); }