aa
This commit is contained in:
parent
fcf9f6fd63
commit
3d869643b4
@ -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 },
|
||||
});
|
||||
|
@ -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
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user