common-tg-service 1.0.96 → 1.0.98
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/Telegram/utils/connection-manager.d.ts +36 -4
- package/dist/components/Telegram/utils/connection-manager.js +226 -88
- package/dist/components/Telegram/utils/connection-manager.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +4 -4
|
@@ -1,9 +1,30 @@
|
|
|
1
1
|
import TelegramManager from '../TelegramManager';
|
|
2
2
|
import { UsersService } from '../../../components/users/users.service';
|
|
3
|
+
interface RetryConfig {
|
|
4
|
+
maxAttempts: number;
|
|
5
|
+
baseDelay: number;
|
|
6
|
+
maxDelay: number;
|
|
7
|
+
backoffMultiplier: number;
|
|
8
|
+
jitter: boolean;
|
|
9
|
+
}
|
|
10
|
+
interface ClientInfo {
|
|
11
|
+
client: TelegramManager;
|
|
12
|
+
lastUsed: number;
|
|
13
|
+
autoDisconnect: boolean;
|
|
14
|
+
connectionAttempts: number;
|
|
15
|
+
lastError?: Error;
|
|
16
|
+
state: 'connecting' | 'connected' | 'disconnecting' | 'disconnected' | 'error';
|
|
17
|
+
retryConfig: RetryConfig;
|
|
18
|
+
nextRetryAt?: number;
|
|
19
|
+
consecutiveFailures: number;
|
|
20
|
+
lastSuccessfulConnection?: number;
|
|
21
|
+
}
|
|
3
22
|
interface GetClientOptions {
|
|
4
23
|
autoDisconnect?: boolean;
|
|
5
24
|
handler?: boolean;
|
|
6
25
|
timeout?: number;
|
|
26
|
+
retryConfig?: Partial<RetryConfig>;
|
|
27
|
+
forceReconnect?: boolean;
|
|
7
28
|
}
|
|
8
29
|
declare class ConnectionManager {
|
|
9
30
|
private static instance;
|
|
@@ -11,21 +32,28 @@ declare class ConnectionManager {
|
|
|
11
32
|
private readonly logger;
|
|
12
33
|
private cleanupInterval;
|
|
13
34
|
private usersService;
|
|
14
|
-
private readonly
|
|
35
|
+
private readonly DEFAULT_RETRY_CONFIG;
|
|
15
36
|
private readonly CONNECTION_TIMEOUT;
|
|
16
37
|
private readonly MAX_CONCURRENT_CONNECTIONS;
|
|
17
38
|
private readonly COOLDOWN_PERIOD;
|
|
39
|
+
private readonly VALIDATION_TIMEOUT;
|
|
18
40
|
private constructor();
|
|
19
41
|
private handleShutdown;
|
|
20
42
|
setUsersService(usersService: UsersService): void;
|
|
21
43
|
static getInstance(): ConnectionManager;
|
|
22
|
-
private
|
|
23
|
-
private
|
|
44
|
+
private calculateRetryDelay;
|
|
45
|
+
private shouldRetry;
|
|
46
|
+
private waitForRetry;
|
|
24
47
|
private validateConnection;
|
|
48
|
+
private attemptConnection;
|
|
25
49
|
getClient(mobile: string, options?: GetClientOptions): Promise<TelegramManager>;
|
|
50
|
+
private retryConnection;
|
|
51
|
+
private handleConnectionError;
|
|
52
|
+
private createNewClient;
|
|
53
|
+
private cleanupInactiveConnections;
|
|
54
|
+
private updateLastUsed;
|
|
26
55
|
hasClient(number: string): boolean;
|
|
27
56
|
disconnectAll(): Promise<void>;
|
|
28
|
-
private registerClient;
|
|
29
57
|
unregisterClient(mobile: string): Promise<void>;
|
|
30
58
|
getActiveConnectionCount(): number;
|
|
31
59
|
startCleanupInterval(intervalMs?: number): NodeJS.Timeout;
|
|
@@ -37,7 +65,11 @@ declare class ConnectionManager {
|
|
|
37
65
|
connecting: number;
|
|
38
66
|
disconnecting: number;
|
|
39
67
|
error: number;
|
|
68
|
+
retrying: number;
|
|
40
69
|
};
|
|
70
|
+
getClientInfo(mobile: string): ClientInfo | undefined;
|
|
71
|
+
forceReconnect(mobile: string): Promise<TelegramManager>;
|
|
72
|
+
setRetryConfig(mobile: string, config: Partial<RetryConfig>): boolean;
|
|
41
73
|
}
|
|
42
74
|
export declare const connectionManager: ConnectionManager;
|
|
43
75
|
export {};
|
|
@@ -14,17 +14,26 @@ class ConnectionManager {
|
|
|
14
14
|
constructor() {
|
|
15
15
|
this.cleanupInterval = null;
|
|
16
16
|
this.usersService = null;
|
|
17
|
-
this.
|
|
18
|
-
|
|
17
|
+
this.DEFAULT_RETRY_CONFIG = {
|
|
18
|
+
maxAttempts: 5,
|
|
19
|
+
baseDelay: 1000,
|
|
20
|
+
maxDelay: 30000,
|
|
21
|
+
backoffMultiplier: 2,
|
|
22
|
+
jitter: true
|
|
23
|
+
};
|
|
24
|
+
this.CONNECTION_TIMEOUT = 60000;
|
|
19
25
|
this.MAX_CONCURRENT_CONNECTIONS = 100;
|
|
20
|
-
this.COOLDOWN_PERIOD =
|
|
26
|
+
this.COOLDOWN_PERIOD = 600000;
|
|
27
|
+
this.VALIDATION_TIMEOUT = 10000;
|
|
21
28
|
this.clients = new Map();
|
|
22
29
|
this.logger = telegram_logger_1.TelegramLogger.getInstance();
|
|
23
30
|
process.on('SIGTERM', () => this.handleShutdown());
|
|
24
31
|
process.on('SIGINT', () => this.handleShutdown());
|
|
32
|
+
this.startCleanupInterval();
|
|
25
33
|
}
|
|
26
34
|
async handleShutdown() {
|
|
27
35
|
this.logger.logOperation('ConnectionManager', 'Graceful shutdown initiated');
|
|
36
|
+
this.stopCleanupInterval();
|
|
28
37
|
await this.disconnectAll();
|
|
29
38
|
process.exit(0);
|
|
30
39
|
}
|
|
@@ -34,43 +43,58 @@ class ConnectionManager {
|
|
|
34
43
|
static getInstance() {
|
|
35
44
|
if (!ConnectionManager.instance) {
|
|
36
45
|
ConnectionManager.instance = new ConnectionManager();
|
|
37
|
-
ConnectionManager.instance.startCleanupInterval(120000);
|
|
38
46
|
}
|
|
39
47
|
return ConnectionManager.instance;
|
|
40
48
|
}
|
|
41
|
-
|
|
49
|
+
calculateRetryDelay(attempt, config) {
|
|
50
|
+
let delay = Math.min(config.baseDelay * Math.pow(config.backoffMultiplier, attempt), config.maxDelay);
|
|
51
|
+
if (config.jitter) {
|
|
52
|
+
delay = delay * (0.5 + Math.random() * 0.5);
|
|
53
|
+
}
|
|
54
|
+
return Math.floor(delay);
|
|
55
|
+
}
|
|
56
|
+
shouldRetry(clientInfo, error) {
|
|
42
57
|
const now = Date.now();
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
if (!connection.autoDisconnect) {
|
|
46
|
-
continue;
|
|
47
|
-
}
|
|
48
|
-
if (now - connection.lastUsed > maxIdleTime ||
|
|
49
|
-
connection.state === 'error' ||
|
|
50
|
-
connection.connectionAttempts >= this.MAX_RETRY_ATTEMPTS) {
|
|
51
|
-
this.logger.logOperation(mobile, `Cleaning up connection in state: ${connection.state}`);
|
|
52
|
-
disconnectionPromises.push(this.unregisterClient(mobile));
|
|
53
|
-
}
|
|
58
|
+
if (clientInfo.connectionAttempts >= clientInfo.retryConfig.maxAttempts) {
|
|
59
|
+
return false;
|
|
54
60
|
}
|
|
55
|
-
|
|
61
|
+
if (clientInfo.nextRetryAt && now < clientInfo.nextRetryAt) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
const errorMessage = error.message.toLowerCase();
|
|
65
|
+
const nonRetryableErrors = [
|
|
66
|
+
'user_deactivated_ban',
|
|
67
|
+
'auth_key_unregistered',
|
|
68
|
+
'session_revoked',
|
|
69
|
+
'phone_number_banned',
|
|
70
|
+
'user_deactivated'
|
|
71
|
+
];
|
|
72
|
+
if (nonRetryableErrors.some(errType => errorMessage.includes(errType))) {
|
|
73
|
+
this.logger.logOperation(clientInfo.client?.phoneNumber || 'unknown', `Non-retryable error detected: ${error.message}`);
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
return true;
|
|
56
77
|
}
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
78
|
+
async waitForRetry(clientInfo) {
|
|
79
|
+
if (!clientInfo.nextRetryAt)
|
|
80
|
+
return;
|
|
81
|
+
const now = Date.now();
|
|
82
|
+
const waitTime = Math.max(0, clientInfo.nextRetryAt - now);
|
|
83
|
+
if (waitTime > 0) {
|
|
84
|
+
this.logger.logOperation(clientInfo.client?.phoneNumber || 'unknown', `Waiting ${waitTime}ms before retry attempt ${clientInfo.connectionAttempts + 1}`);
|
|
85
|
+
await new Promise(resolve => setTimeout(resolve, waitTime));
|
|
62
86
|
}
|
|
63
87
|
}
|
|
64
88
|
async validateConnection(mobile, client) {
|
|
65
89
|
try {
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
throw new Error('Connection validation failed');
|
|
90
|
+
if (!client.connected()) {
|
|
91
|
+
return false;
|
|
69
92
|
}
|
|
70
|
-
|
|
93
|
+
const validationPromises = [
|
|
71
94
|
client.client.getMe(),
|
|
72
|
-
new Promise((_, reject) => setTimeout(() => reject(new Error('
|
|
73
|
-
]
|
|
95
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('Validation timeout')), this.VALIDATION_TIMEOUT))
|
|
96
|
+
];
|
|
97
|
+
await Promise.race(validationPromises);
|
|
74
98
|
return true;
|
|
75
99
|
}
|
|
76
100
|
catch (error) {
|
|
@@ -78,6 +102,18 @@ class ConnectionManager {
|
|
|
78
102
|
return false;
|
|
79
103
|
}
|
|
80
104
|
}
|
|
105
|
+
async attemptConnection(mobile, telegramManager, timeout) {
|
|
106
|
+
const connectionPromises = [
|
|
107
|
+
telegramManager.createClient(true),
|
|
108
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('Connection timeout')), timeout))
|
|
109
|
+
];
|
|
110
|
+
const client = await Promise.race(connectionPromises);
|
|
111
|
+
await Promise.race([
|
|
112
|
+
client.getMe(),
|
|
113
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('Client verification timeout')), 5000))
|
|
114
|
+
]);
|
|
115
|
+
return client;
|
|
116
|
+
}
|
|
81
117
|
async getClient(mobile, options = {}) {
|
|
82
118
|
if (!mobile) {
|
|
83
119
|
throw new common_1.BadRequestException('Mobile number is required');
|
|
@@ -85,77 +121,159 @@ class ConnectionManager {
|
|
|
85
121
|
if (this.clients.size >= this.MAX_CONCURRENT_CONNECTIONS) {
|
|
86
122
|
throw new common_1.InternalServerErrorException('Maximum connection limit reached');
|
|
87
123
|
}
|
|
88
|
-
const { autoDisconnect = true, handler = true, timeout = this.CONNECTION_TIMEOUT } = options;
|
|
89
|
-
const
|
|
90
|
-
|
|
124
|
+
const { autoDisconnect = true, handler = true, timeout = this.CONNECTION_TIMEOUT, retryConfig = {}, forceReconnect = false } = options;
|
|
125
|
+
const mergedRetryConfig = {
|
|
126
|
+
...this.DEFAULT_RETRY_CONFIG,
|
|
127
|
+
...retryConfig
|
|
128
|
+
};
|
|
129
|
+
let clientInfo = this.clients.get(mobile);
|
|
130
|
+
if (clientInfo?.client && !forceReconnect) {
|
|
91
131
|
this.updateLastUsed(mobile);
|
|
92
|
-
if (clientInfo.state === 'connected' &&
|
|
132
|
+
if (clientInfo.state === 'connected' &&
|
|
133
|
+
await this.validateConnection(mobile, clientInfo.client)) {
|
|
93
134
|
this.logger.logOperation(mobile, 'Reusing existing connected client');
|
|
135
|
+
clientInfo.consecutiveFailures = 0;
|
|
136
|
+
clientInfo.lastSuccessfulConnection = Date.now();
|
|
94
137
|
return clientInfo.client;
|
|
95
138
|
}
|
|
96
|
-
if (clientInfo.
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
clientInfo.state = 'connecting';
|
|
100
|
-
this.clients.set(mobile, clientInfo);
|
|
101
|
-
await Promise.race([
|
|
102
|
-
clientInfo.client.connect(),
|
|
103
|
-
new Promise((_, reject) => setTimeout(() => reject(new Error('Connection timeout')), timeout))
|
|
104
|
-
]);
|
|
105
|
-
if (await this.validateConnection(mobile, clientInfo.client)) {
|
|
106
|
-
clientInfo.state = 'connected';
|
|
107
|
-
clientInfo.connectionAttempts = 0;
|
|
108
|
-
this.clients.set(mobile, clientInfo);
|
|
109
|
-
return clientInfo.client;
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
catch (error) {
|
|
113
|
-
clientInfo.connectionAttempts++;
|
|
114
|
-
clientInfo.lastError = error;
|
|
115
|
-
clientInfo.state = 'error';
|
|
116
|
-
this.clients.set(mobile, clientInfo);
|
|
117
|
-
this.logger.logError(mobile, 'Failed to reconnect client', error);
|
|
118
|
-
}
|
|
139
|
+
if (clientInfo.state === 'error' && this.shouldRetry(clientInfo, clientInfo.lastError)) {
|
|
140
|
+
await this.waitForRetry(clientInfo);
|
|
141
|
+
return this.retryConnection(mobile, clientInfo, timeout);
|
|
119
142
|
}
|
|
143
|
+
if (clientInfo.connectionAttempts >= clientInfo.retryConfig.maxAttempts) {
|
|
144
|
+
this.logger.logOperation(mobile, 'Max retry attempts reached, cleaning up client');
|
|
145
|
+
await this.unregisterClient(mobile);
|
|
146
|
+
clientInfo = undefined;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
return this.createNewClient(mobile, mergedRetryConfig, { autoDisconnect, handler, timeout });
|
|
150
|
+
}
|
|
151
|
+
async retryConnection(mobile, clientInfo, timeout) {
|
|
152
|
+
try {
|
|
153
|
+
clientInfo.state = 'connecting';
|
|
154
|
+
clientInfo.connectionAttempts++;
|
|
155
|
+
this.clients.set(mobile, clientInfo);
|
|
156
|
+
this.logger.logOperation(mobile, `Retry attempt ${clientInfo.connectionAttempts}/${clientInfo.retryConfig.maxAttempts}`);
|
|
157
|
+
await Promise.race([
|
|
158
|
+
clientInfo.client.connect(),
|
|
159
|
+
new Promise((_, reject) => setTimeout(() => reject(new Error('Reconnection timeout')), timeout))
|
|
160
|
+
]);
|
|
161
|
+
if (await this.validateConnection(mobile, clientInfo.client)) {
|
|
162
|
+
clientInfo.state = 'connected';
|
|
163
|
+
clientInfo.consecutiveFailures = 0;
|
|
164
|
+
clientInfo.lastSuccessfulConnection = Date.now();
|
|
165
|
+
delete clientInfo.nextRetryAt;
|
|
166
|
+
delete clientInfo.lastError;
|
|
167
|
+
this.clients.set(mobile, clientInfo);
|
|
168
|
+
this.logger.logOperation(mobile, 'Retry connection successful');
|
|
169
|
+
return clientInfo.client;
|
|
170
|
+
}
|
|
171
|
+
throw new Error('Connection validation failed after retry');
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
return this.handleConnectionError(mobile, clientInfo, error);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
async handleConnectionError(mobile, clientInfo, error) {
|
|
178
|
+
clientInfo.lastError = error;
|
|
179
|
+
clientInfo.consecutiveFailures++;
|
|
180
|
+
clientInfo.state = 'error';
|
|
181
|
+
if (this.shouldRetry(clientInfo, error)) {
|
|
182
|
+
const delay = this.calculateRetryDelay(clientInfo.connectionAttempts, clientInfo.retryConfig);
|
|
183
|
+
clientInfo.nextRetryAt = Date.now() + delay;
|
|
184
|
+
this.clients.set(mobile, clientInfo);
|
|
185
|
+
this.logger.logOperation(mobile, `Connection failed, will retry in ${delay}ms. Attempt ${clientInfo.connectionAttempts}/${clientInfo.retryConfig.maxAttempts}`);
|
|
186
|
+
}
|
|
187
|
+
else {
|
|
188
|
+
this.logger.logOperation(mobile, 'Connection failed with non-retryable error or max attempts reached');
|
|
120
189
|
await this.unregisterClient(mobile);
|
|
121
190
|
}
|
|
191
|
+
const errorDetails = (0, parseError_1.parseError)(error, mobile, false);
|
|
192
|
+
throw new common_1.BadRequestException(errorDetails.message);
|
|
193
|
+
}
|
|
194
|
+
async createNewClient(mobile, retryConfig, options) {
|
|
122
195
|
if (!this.usersService) {
|
|
123
|
-
throw new
|
|
196
|
+
throw new common_1.InternalServerErrorException('UsersService not initialized');
|
|
124
197
|
}
|
|
125
198
|
const users = await this.usersService.search({ mobile });
|
|
126
199
|
const user = users[0];
|
|
127
200
|
if (!user) {
|
|
128
201
|
throw new common_1.BadRequestException('User not found');
|
|
129
202
|
}
|
|
130
|
-
this.logger.logOperation(mobile, 'Creating
|
|
203
|
+
this.logger.logOperation(mobile, 'Creating new client', {
|
|
204
|
+
autoDisconnect: options.autoDisconnect,
|
|
205
|
+
handler: options.handler,
|
|
206
|
+
retryConfig
|
|
207
|
+
});
|
|
131
208
|
const telegramManager = new TelegramManager_1.default(user.session, user.mobile);
|
|
132
|
-
|
|
209
|
+
const clientInfo = {
|
|
210
|
+
client: telegramManager,
|
|
211
|
+
lastUsed: Date.now(),
|
|
212
|
+
autoDisconnect: options.autoDisconnect,
|
|
213
|
+
connectionAttempts: 1,
|
|
214
|
+
state: 'connecting',
|
|
215
|
+
retryConfig,
|
|
216
|
+
consecutiveFailures: 0
|
|
217
|
+
};
|
|
218
|
+
this.clients.set(mobile, clientInfo);
|
|
133
219
|
try {
|
|
134
|
-
client = await
|
|
135
|
-
telegramManager.createClient(handler),
|
|
136
|
-
new Promise((_, reject) => setTimeout(() => reject(new Error('Client creation timeout')), timeout))
|
|
137
|
-
]);
|
|
138
|
-
await client.getMe();
|
|
220
|
+
const client = await this.attemptConnection(mobile, telegramManager, options.timeout);
|
|
139
221
|
if (client) {
|
|
140
|
-
|
|
141
|
-
|
|
222
|
+
clientInfo.state = 'connected';
|
|
223
|
+
clientInfo.consecutiveFailures = 0;
|
|
224
|
+
clientInfo.lastSuccessfulConnection = Date.now();
|
|
225
|
+
delete clientInfo.lastError;
|
|
226
|
+
delete clientInfo.nextRetryAt;
|
|
227
|
+
this.clients.set(mobile, clientInfo);
|
|
228
|
+
this.logger.logOperation(mobile, 'New client created successfully');
|
|
142
229
|
return telegramManager;
|
|
143
230
|
}
|
|
144
231
|
else {
|
|
145
|
-
throw new
|
|
232
|
+
throw new Error('Client creation returned null');
|
|
146
233
|
}
|
|
147
234
|
}
|
|
148
235
|
catch (error) {
|
|
149
|
-
this.logger.logError(mobile, '
|
|
150
|
-
this.logger.logDebug(mobile, 'Parsing error details...');
|
|
151
|
-
await this.unregisterClient(mobile);
|
|
236
|
+
this.logger.logError(mobile, 'New client creation failed', error);
|
|
152
237
|
const errorDetails = (0, parseError_1.parseError)(error, mobile, false);
|
|
153
|
-
|
|
238
|
+
try {
|
|
239
|
+
await TelegramBots_config_1.BotConfig.getInstance().sendMessage(TelegramBots_config_1.ChannelCategory.ACCOUNT_LOGIN_FAILURES, `${process.env.clientId}::${mobile}\n\nAttempt: ${clientInfo.connectionAttempts}\nError: ${errorDetails.message}`);
|
|
240
|
+
}
|
|
241
|
+
catch (notificationError) {
|
|
242
|
+
this.logger.logError(mobile, 'Failed to send error notification', notificationError);
|
|
243
|
+
}
|
|
154
244
|
if ((0, utils_1.contains)(errorDetails.message.toLowerCase(), ['expired', 'unregistered', 'deactivated', 'revoked', 'user_deactivated_ban'])) {
|
|
155
|
-
this.logger.logOperation(mobile, 'Marking user as expired');
|
|
156
|
-
|
|
245
|
+
this.logger.logOperation(mobile, 'Marking user as expired due to permanent error');
|
|
246
|
+
try {
|
|
247
|
+
await this.usersService.updateByFilter({ $or: [{ tgId: user.tgId }, { mobile: mobile }] }, { expired: true });
|
|
248
|
+
}
|
|
249
|
+
catch (updateError) {
|
|
250
|
+
this.logger.logError(mobile, 'Failed to mark user as expired', updateError);
|
|
251
|
+
}
|
|
157
252
|
}
|
|
158
|
-
|
|
253
|
+
return this.handleConnectionError(mobile, clientInfo, error);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
async cleanupInactiveConnections(maxIdleTime = 180000) {
|
|
257
|
+
const now = Date.now();
|
|
258
|
+
const disconnectionPromises = [];
|
|
259
|
+
for (const [mobile, connection] of this.clients.entries()) {
|
|
260
|
+
const shouldCleanup = (connection.autoDisconnect || connection.lastUsed <= now - this.COOLDOWN_PERIOD) &&
|
|
261
|
+
(now - connection.lastUsed > maxIdleTime ||
|
|
262
|
+
connection.state === 'error' ||
|
|
263
|
+
connection.consecutiveFailures >= connection.retryConfig.maxAttempts ||
|
|
264
|
+
(connection.state === 'connecting' && now - connection.lastUsed > this.CONNECTION_TIMEOUT * 2));
|
|
265
|
+
if (shouldCleanup) {
|
|
266
|
+
this.logger.logOperation(mobile, `Cleaning up connection - state: ${connection.state}, failures: ${connection.consecutiveFailures}`);
|
|
267
|
+
disconnectionPromises.push(this.unregisterClient(mobile));
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
await Promise.all(disconnectionPromises);
|
|
271
|
+
}
|
|
272
|
+
updateLastUsed(mobile) {
|
|
273
|
+
const connection = this.clients.get(mobile);
|
|
274
|
+
if (connection) {
|
|
275
|
+
connection.lastUsed = Date.now();
|
|
276
|
+
this.clients.set(mobile, connection);
|
|
159
277
|
}
|
|
160
278
|
}
|
|
161
279
|
hasClient(number) {
|
|
@@ -169,7 +287,6 @@ class ConnectionManager {
|
|
|
169
287
|
if (connection.state !== 'disconnecting' && connection.state !== 'disconnected') {
|
|
170
288
|
connection.state = 'disconnecting';
|
|
171
289
|
this.clients.set(mobile, connection);
|
|
172
|
-
this.logger.logOperation(mobile, 'Disconnecting client');
|
|
173
290
|
disconnectionPromises.push(this.unregisterClient(mobile));
|
|
174
291
|
}
|
|
175
292
|
}
|
|
@@ -177,26 +294,17 @@ class ConnectionManager {
|
|
|
177
294
|
this.clients.clear();
|
|
178
295
|
this.logger.logOperation('ConnectionManager', 'All clients disconnected');
|
|
179
296
|
}
|
|
180
|
-
async registerClient(mobile, telegramManager, options = { autoDisconnect: true }) {
|
|
181
|
-
this.clients.set(mobile, {
|
|
182
|
-
client: telegramManager,
|
|
183
|
-
lastUsed: Date.now(),
|
|
184
|
-
autoDisconnect: options.autoDisconnect,
|
|
185
|
-
connectionAttempts: 0,
|
|
186
|
-
state: 'connected'
|
|
187
|
-
});
|
|
188
|
-
this.logger.logOperation(mobile, `Client registered successfully${!options.autoDisconnect ? ' (excluded from auto-cleanup)' : ''}`);
|
|
189
|
-
}
|
|
190
297
|
async unregisterClient(mobile) {
|
|
191
298
|
try {
|
|
192
299
|
const clientInfo = this.clients.get(mobile);
|
|
193
300
|
if (clientInfo) {
|
|
194
301
|
clientInfo.state = 'disconnecting';
|
|
195
302
|
this.clients.set(mobile, clientInfo);
|
|
196
|
-
|
|
303
|
+
const disconnectionPromises = [
|
|
197
304
|
clientInfo.client?.disconnect(),
|
|
198
305
|
new Promise((resolve) => setTimeout(resolve, 5000))
|
|
199
|
-
]
|
|
306
|
+
];
|
|
307
|
+
await Promise.race(disconnectionPromises);
|
|
200
308
|
this.logger.logOperation(mobile, 'Client unregistered successfully');
|
|
201
309
|
}
|
|
202
310
|
}
|
|
@@ -213,6 +321,9 @@ class ConnectionManager {
|
|
|
213
321
|
.length;
|
|
214
322
|
}
|
|
215
323
|
startCleanupInterval(intervalMs = 120000) {
|
|
324
|
+
if (this.cleanupInterval) {
|
|
325
|
+
return this.cleanupInterval;
|
|
326
|
+
}
|
|
216
327
|
this.stopCleanupInterval();
|
|
217
328
|
this.cleanupInterval = setInterval(() => {
|
|
218
329
|
this.cleanupInactiveConnections().catch(err => {
|
|
@@ -220,6 +331,9 @@ class ConnectionManager {
|
|
|
220
331
|
});
|
|
221
332
|
}, intervalMs);
|
|
222
333
|
this.logger.logOperation('ConnectionManager', `Cleanup interval started with ${intervalMs}ms interval`);
|
|
334
|
+
this.cleanupInactiveConnections().catch(err => {
|
|
335
|
+
this.logger.logError('ConnectionManager', 'Error in initial cleanup', err);
|
|
336
|
+
});
|
|
223
337
|
return this.cleanupInterval;
|
|
224
338
|
}
|
|
225
339
|
stopCleanupInterval() {
|
|
@@ -238,13 +352,37 @@ class ConnectionManager {
|
|
|
238
352
|
connected: 0,
|
|
239
353
|
connecting: 0,
|
|
240
354
|
disconnecting: 0,
|
|
241
|
-
error: 0
|
|
355
|
+
error: 0,
|
|
356
|
+
retrying: 0
|
|
242
357
|
};
|
|
358
|
+
const now = Date.now();
|
|
243
359
|
for (const client of this.clients.values()) {
|
|
244
|
-
|
|
360
|
+
if (client.state === 'error' && client.nextRetryAt && now < client.nextRetryAt) {
|
|
361
|
+
stats.retrying++;
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
stats[client.state]++;
|
|
365
|
+
}
|
|
245
366
|
}
|
|
246
367
|
return stats;
|
|
247
368
|
}
|
|
369
|
+
getClientInfo(mobile) {
|
|
370
|
+
return this.clients.get(mobile);
|
|
371
|
+
}
|
|
372
|
+
async forceReconnect(mobile) {
|
|
373
|
+
this.logger.logOperation(mobile, 'Force reconnection requested');
|
|
374
|
+
await this.unregisterClient(mobile);
|
|
375
|
+
return this.getClient(mobile, { forceReconnect: true });
|
|
376
|
+
}
|
|
377
|
+
setRetryConfig(mobile, config) {
|
|
378
|
+
const clientInfo = this.clients.get(mobile);
|
|
379
|
+
if (clientInfo) {
|
|
380
|
+
clientInfo.retryConfig = { ...clientInfo.retryConfig, ...config };
|
|
381
|
+
this.clients.set(mobile, clientInfo);
|
|
382
|
+
return true;
|
|
383
|
+
}
|
|
384
|
+
return false;
|
|
385
|
+
}
|
|
248
386
|
}
|
|
249
387
|
exports.connectionManager = ConnectionManager.getInstance();
|
|
250
388
|
//# sourceMappingURL=connection-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../../../src/components/Telegram/utils/connection-manager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"connection-manager.js","sourceRoot":"","sources":["../../../../src/components/Telegram/utils/connection-manager.ts"],"names":[],"mappings":"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"}
|