aa
Some checks failed
test / Run tests (push) Failing after 14s
build / Build (push) Failing after 19s

This commit is contained in:
2025-02-13 18:04:36 +08:00
parent 3d869643b4
commit 7697c91d95
13 changed files with 1553 additions and 278 deletions

View File

@ -1,5 +1,5 @@
import LoggerCore from "@App/app/logger/core";
import { Message, MessageConnect, MessageSend } from "./server";
import { MessageConnect, MessageSend } from "./server";
export async function sendMessage(msg: MessageSend, action: string, data?: any): Promise<any> {
const res = await msg.sendMessage({ action, data });
@ -12,17 +12,19 @@ export async function sendMessage(msg: MessageSend, action: string, data?: any):
}
}
export function connect(msg: Message, action: string, data?: any): Promise<MessageConnect> {
export function connect(msg: MessageSend, action: string, data?: any): Promise<MessageConnect> {
return msg.connect({ action, data });
}
export class Client {
constructor(
private msg: MessageSend,
private prefix: string
private prefix?: string
) {
if (!this.prefix.endsWith("/")) {
if (this.prefix && !this.prefix.endsWith("/")) {
this.prefix += "/";
} else {
this.prefix = "";
}
}

View File

@ -1,16 +1,12 @@
import { Message, MessageConnect, MessageSend } from "./server";
export class ExtensionMessageSend implements MessageSend {
constructor(protected serverEnv: string) {}
constructor() {}
connect(data: any): Promise<MessageConnect> {
return new Promise((resolve) => {
const con = chrome.runtime.connect();
con.postMessage(
Object.assign(data, {
serverEnv: this.serverEnv,
})
);
con.postMessage(data);
resolve(new ExtensionMessageConnect(con));
});
}
@ -18,14 +14,9 @@ export class ExtensionMessageSend implements MessageSend {
// 发送消息 注意不进行回调的内存泄漏
sendMessage(data: any): Promise<any> {
return new Promise((resolve) => {
chrome.runtime.sendMessage(
Object.assign(data, {
serverEnv: this.serverEnv,
}),
(resp) => {
resolve(resp);
}
);
chrome.runtime.sendMessage(data, (resp) => {
resolve(resp);
});
});
}
}
@ -35,10 +26,6 @@ export class ExtensionMessage extends ExtensionMessageSend implements Message {
chrome.runtime.onConnect.addListener((port) => {
const handler = (msg: any) => {
port.onMessage.removeListener(handler);
if (msg.serverEnv !== this.serverEnv) {
port.disconnect();
return false;
}
callback(msg, new ExtensionMessageConnect(port));
};
port.onMessage.addListener(handler);
@ -48,9 +35,6 @@ export class ExtensionMessage extends ExtensionMessageSend implements Message {
// 注意chrome.runtime.onMessage.addListener的回调函数需要返回true才能处理异步请求
onMessage(callback: (data: any, sendResponse: (data: any) => void) => void) {
chrome.runtime.onMessage.addListener((msg, sender, sendResponse) => {
if (msg.serverEnv !== this.serverEnv) {
return false;
}
return callback(msg, sendResponse);
});
}