feat: better edge case handling

This commit is contained in:
pk5ls20 2024-11-05 22:11:01 +08:00
parent efc9064abb
commit 2a2328b029
No known key found for this signature in database
GPG Key ID: 6370ED7A169F493A
2 changed files with 15 additions and 6 deletions

View File

@ -51,7 +51,7 @@ export class NativePacketClient extends PacketClient {
//此时为recv 调用callback //此时为recv 调用callback
const trace_id = this.sendEvent.get(seq); const trace_id = this.sendEvent.get(seq);
const callback = this.cb.get(trace_id + 'recv'); const callback = this.cb.get(trace_id + 'recv');
console.log('callback:', callback, trace_id); // console.log('callback:', callback, trace_id);
callback?.({ seq, cmd, hex_data }); callback?.({ seq, cmd, hex_data });
} }

View File

@ -17,7 +17,7 @@ const clientPriority: clientPriority = {
export class PacketSession { export class PacketSession {
readonly logger: LogWrapper; readonly logger: LogWrapper;
readonly client: PacketClient; readonly client: PacketClient ;
readonly packer: PacketPacker; readonly packer: PacketPacker;
readonly highwaySession: PacketHighwaySession; readonly highwaySession: PacketHighwaySession;
@ -30,19 +30,28 @@ export class PacketSession {
private newClient(core: NapCatCore): PacketClient { private newClient(core: NapCatCore): PacketClient {
const prefer = core.configLoader.configData.packetBackend; const prefer = core.configLoader.configData.packetBackend;
let client: PacketClient | null;
switch (prefer) { switch (prefer) {
case "native": case "native":
this.logger.log("[Core] [Packet] 使用指定的 NativePacketClient 作为后端"); this.logger.log("[Core] [Packet] 使用指定的 NativePacketClient 作为后端");
return new NativePacketClient(core); client = new NativePacketClient(core);
break;
case "frida": case "frida":
this.logger.log("[Core] [Packet] 使用指定的 FridaPacketClient 作为后端"); this.logger.log("[Core] [Packet] 使用指定的 FridaPacketClient 作为后端");
return new wsPacketClient(core); client = new wsPacketClient(core);
break;
case "auto": case "auto":
case undefined: case undefined:
return this.judgeClient(core); client = this.judgeClient(core);
break;
default: default:
throw new Error(`[Core] [Packet] 未知的Packet后端类型 ${prefer},请检查配置文件!`); this.logger.logError(`[Core] [Packet] 未知的Packet后端类型 ${prefer},请检查配置文件!`);
client = null;
} }
if (!(client && client.check(core))) {
throw new Error("[Core] [Packet] 无可用的后端NapCat.Packet将不会加载");
}
return client;
} }
private judgeClient(core: NapCatCore): PacketClient { private judgeClient(core: NapCatCore): PacketClient {