This commit is contained in:
手瓜一十雪 2024-11-14 11:46:37 +08:00
parent 76b404cdd8
commit 21b228552d
5 changed files with 29 additions and 25 deletions

View File

@ -2,6 +2,7 @@ import { Data, WebSocket } from "ws";
import { IPacketClient, RecvPacket } from "@/core/packet/client/baseClient";
import { PacketContext } from "@/core/packet/context/packetContext";
import { LogStack } from "@/core/packet/context/clientContext";
import { ErrorEvent } from "ws";
export class WsPacketClient extends IPacketClient {
private websocket: WebSocket | null = null;
@ -85,11 +86,11 @@ export class WsPacketClient extends IPacketClient {
this.websocket.onmessage = (event) => this.handleMessage(event.data).catch(err => {
this.context.logger.error(`处理消息时出错: ${err}`);
});
this.websocket.onerror = (error) => {
this.websocket.onerror = (event: ErrorEvent) => {
this.available = false;
this.context.logger.error(`WebSocket 出错: ${error.message}`);
this.context.logger.error(`WebSocket 出错: ${event.message}`);
this.websocket?.close();
reject(error);
reject(new Error(`WebSocket 出错: ${event.message}`));
};
});
}

View File

@ -24,7 +24,7 @@ export class PacketClientSession {
return this.context.operation;
}
// TODO: global message element adapter (?
// work: global message element adapter (?
get msgConverter() {
return this.context.msgConverter;
}

View File

@ -16,7 +16,7 @@ const clientPriority: clientPriority = {
export class LogStack {
private stack: string[] = [];
private logger: PacketLogger;
private readonly logger: PacketLogger;
constructor(logger: PacketLogger) {
this.logger = logger;
@ -82,25 +82,28 @@ export class PacketClientContext {
const prefer = this.context.napcore.config.packetBackend;
let client: IPacketClient | null;
switch (prefer) {
case "native":
this.context.logger.info("使用指定的 NativePacketClient 作为后端");
client = new NativePacketClient(this.context, this.logStack);
break;
case "frida":
this.context.logger.info("[Core] [Packet] 使用指定的 FridaPacketClient 作为后端");
client = new WsPacketClient(this.context, this.logStack);
break;
case "auto":
case undefined:
client = this.judgeClient();
break;
default:
this.context.logger.error(`未知的PacketBackend ${prefer},请检查配置文件!`);
client = null;
case "native":
this.context.logger.info("使用指定的 NativePacketClient 作为后端");
client = new NativePacketClient(this.context, this.logStack);
break;
case "frida":
this.context.logger.info("[Core] [Packet] 使用指定的 FridaPacketClient 作为后端");
client = new WsPacketClient(this.context, this.logStack);
break;
case "auto":
case undefined:
client = this.judgeClient();
break;
default:
this.context.logger.error(`未知的PacketBackend ${prefer},请检查配置文件!`);
client = null;
}
if (!(client && client.check())) {
if (!client?.check()) {
throw new Error("[Core] [Packet] 无可用的后端NapCat.Packet将不会加载");
}
if (!client) {
throw new Error("[Core] [Packet] 后端异常NapCat.Packet将不会加载");
}
return client;
}

View File

@ -1,7 +1,7 @@
import { LogLevel, LogWrapper } from "@/common/log";
import { PacketContext } from "@/core/packet/context/packetContext";
// TODO: check bind?
// work: check bind?
export class PacketLogger {
private readonly napLogger: LogWrapper;

View File

@ -33,7 +33,7 @@ export interface PacketHighwaySig {
}
export class PacketHighwayContext {
private context: PacketContext;
private readonly context: PacketContext;
protected sig: PacketHighwaySig;
protected logger: PacketLogger;
protected hwClient: PacketHighwayClient;
@ -223,7 +223,7 @@ export class PacketHighwayContext {
msgInfoBody: preRespData.upload.msgInfo.msgInfoBody,
blockSize: BlockSize,
hash: {
fileSha1: await calculateSha1StreamBytes(video.filePath!)
fileSha1: await calculateSha1StreamBytes(video.filePath)
}
});
await this.hwClient.upload(
@ -288,7 +288,7 @@ export class PacketHighwayContext {
msgInfoBody: preRespData.upload.msgInfo.msgInfoBody,
blockSize: BlockSize,
hash: {
fileSha1: await calculateSha1StreamBytes(video.filePath!)
fileSha1: await calculateSha1StreamBytes(video.filePath)
}
});
await this.hwClient.upload(