Skip to content

Commit 738f406

Browse files
committed
♻️ 移除 Offscreen 对 ExtensionMessage 的依赖
所有 Offscreen→SW 通信统一走 ServiceWorkerClientMessage(postMessage), 不再需要 ExtensionMessage(chrome.runtime)。
1 parent 2ccbbaa commit 738f406

3 files changed

Lines changed: 16 additions & 20 deletions

File tree

src/app/service/offscreen/index.ts

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import { forwardMessage, Server } from "@Packages/message/server";
22
import type { MessageSend } from "@Packages/message/types";
33
import { ScriptService } from "./script";
44
import { type Logger } from "@App/app/repo/logger";
5-
import { ServiceWorkerClientMessage, WindowMessage } from "@Packages/message/window_message";
5+
import { WindowMessage } from "@Packages/message/window_message";
66
import { sendMessage } from "@Packages/message/client";
77
import GMApi from "./gm_api";
88
import { MessageQueue } from "@Packages/message/message_queue";
@@ -17,13 +17,9 @@ export class OffscreenManager {
1717

1818
private messageQueue = new MessageQueue();
1919

20-
// 通过postMessage与SW通信,支持结构化克隆(Blob等)
21-
private swPostMessage: ServiceWorkerClientMessage;
22-
23-
constructor(private extMsgSender: MessageSend) {
20+
constructor(private msgSender: MessageSend) {
2421
this.windowMessage = new WindowMessage(window, sandbox, true);
2522
this.windowServer = new Server("offscreen", this.windowMessage);
26-
this.swPostMessage = new ServiceWorkerClientMessage();
2723
}
2824

2925
logger(data: Logger) {
@@ -36,11 +32,11 @@ export class OffscreenManager {
3632

3733
preparationSandbox() {
3834
// 通知初始化好环境了
39-
sendMessage(this.swPostMessage, "serviceWorker/preparationOffscreen");
35+
sendMessage(this.msgSender, "serviceWorker/preparationOffscreen");
4036
}
4137

4238
sendMessageToServiceWorker(data: { action: string; data: any }) {
43-
return sendMessage(this.extMsgSender, `serviceWorker/${data.action}`, data.data);
39+
return sendMessage(this.msgSender, `serviceWorker/${data.action}`, data.data);
4440
}
4541

4642
async initManager() {
@@ -50,20 +46,20 @@ export class OffscreenManager {
5046
this.windowServer.on("sendMessageToServiceWorker", this.sendMessageToServiceWorker.bind(this));
5147
const script = new ScriptService(
5248
this.windowServer.group("script"),
53-
this.extMsgSender,
49+
this.msgSender,
5450
this.windowMessage,
5551
this.messageQueue
5652
);
5753
script.init();
5854
// 转发从sandbox来的gm api请求,通过postMessage通道传输(支持Blob等结构化克隆)
59-
forwardMessage("serviceWorker", "runtime/gmApi", this.windowServer, this.swPostMessage);
55+
forwardMessage("serviceWorker", "runtime/gmApi", this.windowServer, this.msgSender);
6056
// 转发valueUpdate与emitEvent
6157
forwardMessage("sandbox", "runtime/valueUpdate", this.windowServer, this.windowMessage);
6258
forwardMessage("sandbox", "runtime/emitEvent", this.windowServer, this.windowMessage);
6359

6460
const gmApi = new GMApi(this.windowServer.group("gmApi"));
6561
gmApi.init();
66-
const vscodeConnect = new VSCodeConnect(this.windowServer.group("vscodeConnect"), this.extMsgSender);
62+
const vscodeConnect = new VSCodeConnect(this.windowServer.group("vscodeConnect"), this.msgSender);
6763
vscodeConnect.init();
6864

6965
this.windowServer.on("createObjectURL", async (params: { blob: Blob; persistence: boolean }) => {

src/app/service/offscreen/script.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@ export class ScriptService {
2424

2525
constructor(
2626
private group: Group,
27-
private extMsgSender: MessageSend,
27+
private msgSender: MessageSend,
2828
private windowMessage: WindowMessage,
2929
private messageQueue: IMessageQueue
3030
) {
3131
this.logger = LoggerCore.logger().with({ service: "script" });
32-
this.scriptClient = new ScriptClient(this.extMsgSender);
33-
this.resourceClient = new ResourceClient(this.extMsgSender);
34-
this.valueClient = new ValueClient(this.extMsgSender);
32+
this.scriptClient = new ScriptClient(this.msgSender);
33+
this.resourceClient = new ResourceClient(this.msgSender);
34+
this.valueClient = new ValueClient(this.msgSender);
3535
}
3636

3737
runScript(script: ScriptRunResource) {

src/offscreen.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
import type { Message } from "@Packages/message/types";
21
import LoggerCore from "./app/logger/core";
32
import MessageWriter from "./app/logger/message_writer";
43
import { OffscreenManager } from "./app/service/offscreen";
5-
import { ExtensionMessage } from "@Packages/message/extension_message";
4+
import { ServiceWorkerClientMessage } from "@Packages/message/window_message";
65

76
function main() {
7+
// 通过postMessage与SW通信,支持结构化克隆(Blob等)
8+
const swPostMessage = new ServiceWorkerClientMessage();
89
// 初始化日志组件
9-
const extMsgSender: Message = new ExtensionMessage();
1010
const loggerCore = new LoggerCore({
11-
writer: new MessageWriter(extMsgSender, "serviceWorker/logger"),
11+
writer: new MessageWriter(swPostMessage, "serviceWorker/logger"),
1212
labels: { env: "offscreen" },
1313
});
1414
loggerCore.logger().debug("offscreen start");
1515
// 初始化管理器
16-
const manager = new OffscreenManager(extMsgSender);
16+
const manager = new OffscreenManager(swPostMessage);
1717
manager.initManager();
1818
}
1919

0 commit comments

Comments
 (0)