mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-12-20 05:30:06 +08:00
fix: 简化代码
This commit is contained in:
parent
4ed61136b2
commit
458d22223c
@ -64,42 +64,45 @@ export class NativePacketClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async sendPacket(cmd: string, data: PacketHexStr, rsp = false, timeout = 5000): Promise<RecvPacketData> {
|
async sendPacket(
|
||||||
|
cmd: string,
|
||||||
|
data: PacketHexStr,
|
||||||
|
rsp = false,
|
||||||
|
timeout = 5000
|
||||||
|
): Promise<RecvPacketData> {
|
||||||
if (!rsp) {
|
if (!rsp) {
|
||||||
this.napcore.sendSsoCmdReqByContend(cmd, Buffer.from(data, 'hex')).catch(err => {
|
this.napcore
|
||||||
this.logger.error(`[PacketClient] sendPacket 无响应命令发送失败 cmd=${cmd} err=${err}`);
|
.sendSsoCmdReqByContend(cmd, Buffer.from(data, 'hex'))
|
||||||
});
|
.catch(err =>
|
||||||
return { seq: 0, cmd: cmd, data: Buffer.alloc(0) };
|
this.logger.error(
|
||||||
|
`[PacketClient] sendPacket 无响应命令发送失败 cmd=${cmd} err=${err}`
|
||||||
|
)
|
||||||
|
);
|
||||||
|
return { seq: 0, cmd, data: Buffer.alloc(0) };
|
||||||
}
|
}
|
||||||
|
|
||||||
const task = new CancelableTask<RecvPacketData>((resolve, reject, onCancel) => {
|
const sendPromise = this.napcore
|
||||||
const timeoutId = setTimeout(() => {
|
.sendSsoCmdReqByContend(cmd, Buffer.from(data, 'hex'))
|
||||||
reject(new Error(`[PacketClient] sendPacket 超时 cmd=${cmd} timeout=${timeout}ms`));
|
.then(ret => ({
|
||||||
}, timeout);
|
seq: 0,
|
||||||
|
cmd,
|
||||||
|
data: (ret as { rspbuffer: Buffer }).rspbuffer
|
||||||
|
}));
|
||||||
|
|
||||||
onCancel(() => {
|
const timeoutPromise = new Promise<RecvPacketData>((_, reject) => {
|
||||||
clearTimeout(timeoutId);
|
setTimeout(
|
||||||
});
|
() =>
|
||||||
|
reject(
|
||||||
this.napcore.sendSsoCmdReqByContend(cmd, Buffer.from(data, 'hex'))
|
new Error(
|
||||||
.then(ret => {
|
`[PacketClient] sendPacket 超时 cmd=${cmd} timeout=${timeout}ms`
|
||||||
clearTimeout(timeoutId);
|
)
|
||||||
const result = ret as { rspbuffer: Buffer };
|
),
|
||||||
resolve({
|
timeout
|
||||||
seq: 0,
|
);
|
||||||
cmd: cmd,
|
|
||||||
data: result.rspbuffer
|
|
||||||
});
|
|
||||||
})
|
|
||||||
.catch(err => {
|
|
||||||
clearTimeout(timeoutId);
|
|
||||||
reject(err);
|
|
||||||
});
|
|
||||||
});
|
});
|
||||||
|
|
||||||
return await task;
|
return Promise.race([sendPromise, timeoutPromise]);
|
||||||
}
|
}
|
||||||
|
|
||||||
async sendOidbPacket(pkt: OidbPacket, rsp = false, timeout = 5000): Promise<RecvPacketData> {
|
async sendOidbPacket(pkt: OidbPacket, rsp = false, timeout = 5000): Promise<RecvPacketData> {
|
||||||
return await this.sendPacket(pkt.cmd, pkt.data, rsp, timeout);
|
return await this.sendPacket(pkt.cmd, pkt.data, rsp, timeout);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user