refactor: add available accessor property in PacketClient

This commit is contained in:
pk5ls20
2024-10-14 15:13:44 +08:00
parent b4cb3ddf1c
commit a79c933693
8 changed files with 13 additions and 9 deletions

View File

@@ -377,7 +377,7 @@ export class NTQQFileApi {
online_rkey: false
};
try {
if (this.core.apis.PacketApi.packetClient?.isConnected) {
if (this.core.apis.PacketApi.packetClient?.available) {
if ((!this.packetRkey || this.packetRkey[0].time > Date.now() / 1000)) {
this.packetRkey = await this.core.apis.PacketApi.sendRkeyPacket();
}

View File

@@ -69,7 +69,7 @@ export class NTQQPacketApi {
// wtfk tx
// 校验失败和异常 可能返回undefined
return new Promise((resolve, reject) => {
if (!this.isInit || !this.packetClient?.isConnected) {
if (!this.isInit || !this.packetClient?.available) {
this.core.context.logger.logError('packetClient is not init');
return undefined;
}

View File

@@ -5,19 +5,23 @@ import { createHash } from "crypto";
export class PacketClient {
private websocket: WebSocket | undefined;
public isConnected: boolean = false;
private isConnected: boolean = false;
private reconnectAttempts: number = 0;
private maxReconnectAttempts: number = 5;
//trace_id-type callback
private cb = new LRUCache<string, any>(500);
constructor(private url: string, public logger: LogWrapper) { }
get available(): boolean {
return this.isConnected && this.websocket !== undefined;
}
connect(): Promise<void> {
return new Promise((resolve, reject) => {
this.logger.log.bind(this.logger)(`Attempting to connect to ${this.url}`);
this.websocket = new WebSocket(this.url);
this.websocket.on('error', (err) => this.logger.logError.bind(this.logger)('[Core] [Packet Server] Error:', err.message));
this.websocket.onopen = () => {
this.isConnected = true;
this.reconnectAttempts = 0;