diff --git a/.vscode/settings.json b/.vscode/settings.json index ca143742..48eac328 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -6,5 +6,7 @@ "tsconfig.json": "tsconfig.*.json, env.d.ts, vite.config.ts", "package.json": "package-lock.json, eslint*, .prettier*, .editorconfig, manifest.json, logo.png, .gitignore, LICENSE" }, - "css.customData": [".vscode/tailwindcss.json"], + "css.customData": [ + ".vscode/tailwindcss.json" + ], } \ No newline at end of file diff --git a/src/core/packet/client/nativeClient.ts b/src/core/packet/client/nativeClient.ts index 356734b5..bb0ec2e2 100644 --- a/src/core/packet/client/nativeClient.ts +++ b/src/core/packet/client/nativeClient.ts @@ -38,12 +38,12 @@ export class NativePacketClient extends IPacketClient { return true; } - async init(pid: number, recv: string, send: string): Promise { + async init(_pid: number, recv: string, send: string): Promise { const platform = process.platform + '.' + process.arch; const moehoo_path = path.join(dirname(fileURLToPath(import.meta.url)), './moehoo/MoeHoo.' + platform + '.node'); process.dlopen(this.MoeHooExport, moehoo_path, constants.dlopen.RTLD_LAZY); - - this.MoeHooExport.exports.InitHook?.(send, recv, (type: number, uin: string, cmd: string, seq: number, hex_data: string) => { + + this.MoeHooExport.exports.InitHook?.(send, recv, (type: number, _uin: string, cmd: string, seq: number, hex_data: string) => { const trace_id = createHash('md5').update(Buffer.from(hex_data, 'hex')).digest('hex'); if (type === 0 && this.cb.get(trace_id + 'recv')) { //此时为send 提取seq diff --git a/src/core/packet/client/wsClient.ts b/src/core/packet/client/wsClient.ts deleted file mode 100644 index dc4d9929..00000000 --- a/src/core/packet/client/wsClient.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { Data, WebSocket, ErrorEvent } from 'ws'; -import { IPacketClient, RecvPacket } from '@/core/packet/client/baseClient'; -import { LogStack } from '@/core/packet/context/clientContext'; -import { NapCoreContext } from '@/core/packet/context/napCoreContext'; -import { PacketLogger } from '@/core/packet/context/loggerContext'; - -export class WsPacketClient extends IPacketClient { - private websocket: WebSocket | null = null; - private reconnectAttempts: number = 0; - private readonly maxReconnectAttempts: number = 60; // 现在暂时不可配置 - private readonly clientUrl: string; - private readonly clientUrlWrap: (url: string) => string = (url: string) => `ws://${url}/ws`; - - private isInitialized: boolean = false; - private initPayload: { pid: number, recv: string, send: string } | null = null; - - constructor(napCore: NapCoreContext, logger: PacketLogger, logStack: LogStack) { - super(napCore, logger, logStack); - this.clientUrl = this.napcore.config.packetServer - ? this.clientUrlWrap(this.napcore.config.packetServer) - : this.clientUrlWrap('127.0.0.1:8083'); - } - - check(): boolean { - if (!this.napcore.config.packetServer) { - this.logStack.pushLogWarn('wsPacketClient 未配置服务器地址'); - return false; - } - return true; - } - - async init(pid: number, recv: string, send: string): Promise { - this.initPayload = { pid, recv, send }; - await this.connectWithRetry(); - } - - sendCommandImpl(cmd: string, data: string, trace_id: string): void { - if (this.websocket && this.websocket.readyState === WebSocket.OPEN) { - this.websocket.send(JSON.stringify({ - action: 'send', - cmd, - data, - trace_id - })); - } else { - this.logStack.pushLogWarn(`WebSocket 未连接,无法发送命令: ${cmd}`); - } - } - - private async connectWithRetry(): Promise { - while (this.reconnectAttempts < this.maxReconnectAttempts) { - try { - await this.connect(); - return; - } catch { - this.reconnectAttempts++; - this.logStack.pushLogWarn(`第 ${this.reconnectAttempts}/${this.maxReconnectAttempts} 次尝试重连失败!`); - await this.delay(5000); - } - } - this.logStack.pushLogError(`wsPacketClient 在 ${this.clientUrl} 达到最大重连次数 (${this.maxReconnectAttempts})!`); - throw new Error(`无法连接到 WebSocket 服务器:${this.clientUrl}`); - } - - private connect(): Promise { - return new Promise((resolve, reject) => { - this.websocket = new WebSocket(this.clientUrl); - this.websocket.onopen = () => { - this.available = true; - this.reconnectAttempts = 0; - this.logger.info(`wsPacketClient 已连接到 ${this.clientUrl}`); - if (!this.isInitialized && this.initPayload) { - this.websocket!.send(JSON.stringify({ - action: 'init', - ...this.initPayload - })); - this.isInitialized = true; - } - resolve(); - }; - this.websocket.onclose = () => { - this.available = false; - this.logger.warn('WebSocket 连接关闭,尝试重连...'); - reject(new Error('WebSocket 连接关闭')); - }; - this.websocket.onmessage = (event) => this.handleMessage(event.data).catch(err => { - this.logger.error(`处理消息时出错: ${err}`); - }); - this.websocket.onerror = (event: ErrorEvent) => { - this.available = false; - this.logger.error(`WebSocket 出错: ${event.message}`); - this.websocket?.close(); - reject(new Error(`WebSocket 出错: ${event.message}`)); - }; - }); - } - - private delay(ms: number): Promise { - return new Promise(resolve => setTimeout(resolve, ms)); - } - - private async handleMessage(message: Data): Promise { - try { - const json: RecvPacket = JSON.parse(message.toString()); - const trace_id_md5 = json.trace_id_md5; - const action = json?.type ?? 'init'; - const event = this.cb.get(`${trace_id_md5}${action}`); - if (event) await event(json.data); - } catch (error) { - this.logger.error(`解析ws消息时出错: ${(error as Error).message}`); - } - } -}