mirror of
https://github.com/NapNeko/NapCatQQ.git
synced 2025-12-19 21:20:07 +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) {
|
||||
this.napcore.sendSsoCmdReqByContend(cmd, Buffer.from(data, 'hex')).catch(err => {
|
||||
this.logger.error(`[PacketClient] sendPacket 无响应命令发送失败 cmd=${cmd} err=${err}`);
|
||||
});
|
||||
return { seq: 0, cmd: cmd, data: Buffer.alloc(0) };
|
||||
this.napcore
|
||||
.sendSsoCmdReqByContend(cmd, Buffer.from(data, 'hex'))
|
||||
.catch(err =>
|
||||
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 timeoutId = setTimeout(() => {
|
||||
reject(new Error(`[PacketClient] sendPacket 超时 cmd=${cmd} timeout=${timeout}ms`));
|
||||
}, timeout);
|
||||
|
||||
onCancel(() => {
|
||||
clearTimeout(timeoutId);
|
||||
});
|
||||
|
||||
this.napcore.sendSsoCmdReqByContend(cmd, Buffer.from(data, 'hex'))
|
||||
.then(ret => {
|
||||
clearTimeout(timeoutId);
|
||||
const result = ret as { rspbuffer: Buffer };
|
||||
resolve({
|
||||
const sendPromise = this.napcore
|
||||
.sendSsoCmdReqByContend(cmd, Buffer.from(data, 'hex'))
|
||||
.then(ret => ({
|
||||
seq: 0,
|
||||
cmd: cmd,
|
||||
data: result.rspbuffer
|
||||
});
|
||||
})
|
||||
.catch(err => {
|
||||
clearTimeout(timeoutId);
|
||||
reject(err);
|
||||
});
|
||||
cmd,
|
||||
data: (ret as { rspbuffer: Buffer }).rspbuffer
|
||||
}));
|
||||
|
||||
const timeoutPromise = new Promise<RecvPacketData>((_, reject) => {
|
||||
setTimeout(
|
||||
() =>
|
||||
reject(
|
||||
new Error(
|
||||
`[PacketClient] sendPacket 超时 cmd=${cmd} timeout=${timeout}ms`
|
||||
)
|
||||
),
|
||||
timeout
|
||||
);
|
||||
});
|
||||
|
||||
return await task;
|
||||
return Promise.race([sendPromise, timeoutPromise]);
|
||||
}
|
||||
|
||||
async sendOidbPacket(pkt: OidbPacket, rsp = false, timeout = 5000): Promise<RecvPacketData> {
|
||||
return await this.sendPacket(pkt.cmd, pkt.data, rsp, timeout);
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user