mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-07-19 12:03:37 +00:00
Compare commits
5 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
2a2328b029 | ||
![]() |
efc9064abb | ||
![]() |
dd70adf071 | ||
![]() |
0f427375cb | ||
![]() |
4001270b93 |
@@ -4,7 +4,7 @@
|
|||||||
"name": "NapCatQQ",
|
"name": "NapCatQQ",
|
||||||
"slug": "NapCat.Framework",
|
"slug": "NapCat.Framework",
|
||||||
"description": "高性能的 OneBot 11 协议实现",
|
"description": "高性能的 OneBot 11 协议实现",
|
||||||
"version": "3.4.9",
|
"version": "3.4.11",
|
||||||
"icon": "./logo.png",
|
"icon": "./logo.png",
|
||||||
"authors": [
|
"authors": [
|
||||||
{
|
{
|
||||||
|
@@ -2,7 +2,7 @@
|
|||||||
"name": "napcat",
|
"name": "napcat",
|
||||||
"private": true,
|
"private": true,
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"version": "3.4.9",
|
"version": "3.4.11",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"build:framework": "vite build --mode framework",
|
"build:framework": "vite build --mode framework",
|
||||||
"build:shell": "vite build --mode shell",
|
"build:shell": "vite build --mode shell",
|
||||||
|
@@ -1 +1 @@
|
|||||||
export const napCatVersion = '3.4.9';
|
export const napCatVersion = '3.4.11';
|
||||||
|
@@ -58,12 +58,9 @@ export abstract class PacketClient {
|
|||||||
private async sendCommand(cmd: string, data: string, trace_id: string, rsp: boolean = false, timeout: number = 20000, sendcb: (json: RecvPacketData) => void = () => {
|
private async sendCommand(cmd: string, data: string, trace_id: string, rsp: boolean = false, timeout: number = 20000, sendcb: (json: RecvPacketData) => void = () => {
|
||||||
}): Promise<RecvPacketData> {
|
}): Promise<RecvPacketData> {
|
||||||
return new Promise<RecvPacketData>((resolve, reject) => {
|
return new Promise<RecvPacketData>((resolve, reject) => {
|
||||||
if (rsp) {
|
const timeoutHandle = setTimeout(() => {
|
||||||
this.registerCallback(trace_id, 'recv', async (json: RecvPacketData) => {
|
reject(new Error(`sendCommand timed out after ${timeout} ms for ${cmd} with trace_id ${trace_id}`));
|
||||||
clearTimeout(timeoutHandle);
|
}, timeout);
|
||||||
resolve(json);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
this.registerCallback(trace_id, 'send', async (json: RecvPacketData) => {
|
this.registerCallback(trace_id, 'send', async (json: RecvPacketData) => {
|
||||||
sendcb(json);
|
sendcb(json);
|
||||||
if (!rsp) {
|
if (!rsp) {
|
||||||
@@ -71,10 +68,13 @@ export abstract class PacketClient {
|
|||||||
resolve(json);
|
resolve(json);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
if (rsp) {
|
||||||
|
this.registerCallback(trace_id, 'recv', async (json: RecvPacketData) => {
|
||||||
|
clearTimeout(timeoutHandle);
|
||||||
|
resolve(json);
|
||||||
|
});
|
||||||
|
}
|
||||||
this.sendCommandImpl(cmd, data, trace_id);
|
this.sendCommandImpl(cmd, data, trace_id);
|
||||||
const timeoutHandle = setTimeout(() => {
|
|
||||||
reject(new Error(`sendCommand timed out after ${timeout} ms for ${cmd} with trace_id ${trace_id}`));
|
|
||||||
}, timeout);
|
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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 });
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -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,17 +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":
|
||||||
return new NativePacketClient(core);
|
this.logger.log("[Core] [Packet] 使用指定的 NativePacketClient 作为后端");
|
||||||
|
client = new NativePacketClient(core);
|
||||||
|
break;
|
||||||
case "frida":
|
case "frida":
|
||||||
return new wsPacketClient(core);
|
this.logger.log("[Core] [Packet] 使用指定的 FridaPacketClient 作为后端");
|
||||||
|
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 {
|
||||||
|
@@ -164,7 +164,7 @@ async function onSettingWindowCreated(view) {
|
|||||||
SettingItem(
|
SettingItem(
|
||||||
'<span id="napcat-update-title">Napcat</span>',
|
'<span id="napcat-update-title">Napcat</span>',
|
||||||
void 0,
|
void 0,
|
||||||
SettingButton("V3.4.9", "napcat-update-button", "secondary")
|
SettingButton("V3.4.11", "napcat-update-button", "secondary")
|
||||||
)
|
)
|
||||||
]),
|
]),
|
||||||
SettingList([
|
SettingList([
|
||||||
|
Reference in New Issue
Block a user