solver-sdk 1.8.1 → 2.0.0
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/cjs/api/projects-api.js +4 -6
- package/dist/cjs/api/projects-api.js.map +1 -1
- package/dist/cjs/{code-solver-sdk.js → code-solver-sdk-v2.js} +220 -271
- package/dist/cjs/code-solver-sdk-v2.js.map +1 -0
- package/dist/cjs/constants/websocket-events.constants.js +37 -1
- package/dist/cjs/constants/websocket-events.constants.js.map +1 -1
- package/dist/cjs/constants/websocket-namespaces.constants.js +20 -0
- package/dist/cjs/constants/websocket-namespaces.constants.js.map +1 -0
- package/dist/cjs/index.js +24 -49
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/interfaces/websocket/callbacks.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/callbacks.interfaces.js.map +1 -0
- package/dist/cjs/interfaces/websocket/client-options.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/client-options.interfaces.js.map +1 -0
- package/dist/cjs/interfaces/websocket/events.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/events.interfaces.js.map +1 -0
- package/dist/cjs/interfaces/websocket/stats.interfaces.js +3 -0
- package/dist/cjs/interfaces/websocket/stats.interfaces.js.map +1 -0
- package/dist/cjs/utils/code-solver-websocket-client.js +382 -1503
- package/dist/cjs/utils/code-solver-websocket-client.js.map +1 -1
- package/dist/cjs/utils/connection-state-manager.js +133 -0
- package/dist/cjs/utils/connection-state-manager.js.map +1 -0
- package/dist/cjs/utils/logger.js +106 -0
- package/dist/cjs/utils/logger.js.map +1 -0
- package/dist/cjs/utils/ping-pong-manager.js +306 -0
- package/dist/cjs/utils/ping-pong-manager.js.map +1 -0
- package/dist/cjs/utils/session-manager.js +114 -0
- package/dist/cjs/utils/session-manager.js.map +1 -0
- package/dist/cjs/ws/base-ws-client.js +286 -0
- package/dist/cjs/ws/base-ws-client.js.map +1 -0
- package/dist/cjs/ws/dependencies-ws-client.js +11 -0
- package/dist/cjs/ws/dependencies-ws-client.js.map +1 -0
- package/dist/cjs/ws/diagnostics-service.js +170 -0
- package/dist/cjs/ws/diagnostics-service.js.map +1 -0
- package/dist/cjs/ws/filesystem-ws-client.js +315 -0
- package/dist/cjs/ws/filesystem-ws-client.js.map +1 -0
- package/dist/cjs/ws/indexing-ws-client.js +223 -0
- package/dist/cjs/ws/indexing-ws-client.js.map +1 -0
- package/dist/cjs/ws/notifications-ws-client.js +12 -0
- package/dist/cjs/ws/notifications-ws-client.js.map +1 -0
- package/dist/cjs/ws/reasoning-ws-client.js +330 -0
- package/dist/cjs/ws/reasoning-ws-client.js.map +1 -0
- package/dist/esm/api/projects-api.js +4 -6
- package/dist/esm/api/projects-api.js.map +1 -1
- package/dist/esm/{code-solver-sdk.js → code-solver-sdk-v2.js} +220 -271
- package/dist/esm/code-solver-sdk-v2.js.map +1 -0
- package/dist/esm/constants/websocket-events.constants.js +36 -0
- package/dist/esm/constants/websocket-events.constants.js.map +1 -1
- package/dist/esm/constants/websocket-namespaces.constants.js +17 -0
- package/dist/esm/constants/websocket-namespaces.constants.js.map +1 -0
- package/dist/esm/index.js +22 -97
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/interfaces/websocket/callbacks.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/callbacks.interfaces.js.map +1 -0
- package/dist/esm/interfaces/websocket/client-options.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/client-options.interfaces.js.map +1 -0
- package/dist/esm/interfaces/websocket/events.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/events.interfaces.js.map +1 -0
- package/dist/esm/interfaces/websocket/stats.interfaces.js +2 -0
- package/dist/esm/interfaces/websocket/stats.interfaces.js.map +1 -0
- package/dist/esm/utils/code-solver-websocket-client.js +381 -1503
- package/dist/esm/utils/code-solver-websocket-client.js.map +1 -1
- package/dist/esm/utils/connection-state-manager.js +129 -0
- package/dist/esm/utils/connection-state-manager.js.map +1 -0
- package/dist/esm/utils/logger.js +101 -0
- package/dist/esm/utils/logger.js.map +1 -0
- package/dist/esm/utils/ping-pong-manager.js +302 -0
- package/dist/esm/utils/ping-pong-manager.js.map +1 -0
- package/dist/esm/utils/session-manager.js +109 -0
- package/dist/esm/utils/session-manager.js.map +1 -0
- package/dist/esm/ws/base-ws-client.js +282 -0
- package/dist/esm/ws/base-ws-client.js.map +1 -0
- package/dist/esm/ws/dependencies-ws-client.js +7 -0
- package/dist/esm/ws/dependencies-ws-client.js.map +1 -0
- package/dist/esm/ws/diagnostics-service.js +166 -0
- package/dist/esm/ws/diagnostics-service.js.map +1 -0
- package/dist/esm/ws/filesystem-ws-client.js +311 -0
- package/dist/esm/ws/filesystem-ws-client.js.map +1 -0
- package/dist/esm/ws/indexing-ws-client.js +219 -0
- package/dist/esm/ws/indexing-ws-client.js.map +1 -0
- package/dist/esm/ws/notifications-ws-client.js +8 -0
- package/dist/esm/ws/notifications-ws-client.js.map +1 -0
- package/dist/esm/ws/reasoning-ws-client.js +326 -0
- package/dist/esm/ws/reasoning-ws-client.js.map +1 -0
- package/dist/types/api/projects-api.d.ts.map +1 -1
- package/dist/types/{code-solver-sdk.d.ts → code-solver-sdk-v2.d.ts} +82 -85
- package/dist/types/code-solver-sdk-v2.d.ts.map +1 -0
- package/dist/types/constants/websocket-events.constants.d.ts +33 -0
- package/dist/types/constants/websocket-events.constants.d.ts.map +1 -1
- package/dist/types/constants/websocket-namespaces.constants.d.ts +16 -0
- package/dist/types/constants/websocket-namespaces.constants.d.ts.map +1 -0
- package/dist/types/index.d.ts +20 -90
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts +30 -0
- package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts.map +1 -0
- package/dist/types/interfaces/websocket/client-options.interfaces.d.ts +51 -0
- package/dist/types/interfaces/websocket/client-options.interfaces.d.ts.map +1 -0
- package/dist/types/interfaces/websocket/events.interfaces.d.ts +165 -0
- package/dist/types/interfaces/websocket/events.interfaces.d.ts.map +1 -0
- package/dist/types/interfaces/websocket/stats.interfaces.d.ts +72 -0
- package/dist/types/interfaces/websocket/stats.interfaces.d.ts.map +1 -0
- package/dist/types/utils/code-solver-websocket-client.d.ts +70 -616
- package/dist/types/utils/code-solver-websocket-client.d.ts.map +1 -1
- package/dist/types/utils/connection-state-manager.d.ts +94 -0
- package/dist/types/utils/connection-state-manager.d.ts.map +1 -0
- package/dist/types/utils/logger.d.ts +62 -0
- package/dist/types/utils/logger.d.ts.map +1 -0
- package/dist/types/utils/ping-pong-manager.d.ts +118 -0
- package/dist/types/utils/ping-pong-manager.d.ts.map +1 -0
- package/dist/types/utils/session-manager.d.ts +98 -0
- package/dist/types/utils/session-manager.d.ts.map +1 -0
- package/dist/types/ws/base-ws-client.d.ts +119 -0
- package/dist/types/ws/base-ws-client.d.ts.map +1 -0
- package/dist/types/ws/dependencies-ws-client.d.ts +6 -0
- package/dist/types/ws/dependencies-ws-client.d.ts.map +1 -0
- package/dist/types/ws/diagnostics-service.d.ts +93 -0
- package/dist/types/ws/diagnostics-service.d.ts.map +1 -0
- package/dist/types/ws/filesystem-ws-client.d.ts +203 -0
- package/dist/types/ws/filesystem-ws-client.d.ts.map +1 -0
- package/dist/types/ws/indexing-ws-client.d.ts +78 -0
- package/dist/types/ws/indexing-ws-client.d.ts.map +1 -0
- package/dist/types/ws/notifications-ws-client.d.ts +5 -0
- package/dist/types/ws/notifications-ws-client.d.ts.map +1 -0
- package/dist/types/ws/reasoning-ws-client.d.ts +87 -0
- package/dist/types/ws/reasoning-ws-client.d.ts.map +1 -0
- package/docs/AUTHENTICATION.md +31 -127
- package/docs/WEBSOCKET.md +51 -211
- package/package.json +1 -1
- package/dist/cjs/code-solver-sdk.js.map +0 -1
- package/dist/esm/code-solver-sdk.js.map +0 -1
- package/dist/types/code-solver-sdk.d.ts.map +0 -1
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PingPongManager = void 0;
|
|
4
|
+
const logger_js_1 = require("./logger.js");
|
|
5
|
+
const websocket_events_constants_js_1 = require("../constants/websocket-events.constants.js");
|
|
6
|
+
/**
|
|
7
|
+
* Класс для управления механизмом ping/pong
|
|
8
|
+
*/
|
|
9
|
+
class PingPongManager {
|
|
10
|
+
/**
|
|
11
|
+
* Создает новый менеджер ping/pong
|
|
12
|
+
* @param {PingPongManagerOptions} options Опции менеджера ping/pong
|
|
13
|
+
*/
|
|
14
|
+
constructor(options = {}) {
|
|
15
|
+
/** Таймеры для ping/pong */
|
|
16
|
+
this.pingIntervals = new Map();
|
|
17
|
+
/** Статистика ping/pong */
|
|
18
|
+
this.pingStats = new Map();
|
|
19
|
+
/** Количество последовательных таймаутов */
|
|
20
|
+
this.pingTimeouts = new Map();
|
|
21
|
+
/** Хранилище обработчиков ping/pong */
|
|
22
|
+
this.pingPongEventHandlers = new Map();
|
|
23
|
+
/** Клиенты WebSocket по namespace */
|
|
24
|
+
this.clients = new Map();
|
|
25
|
+
this.pingInterval = options.pingInterval || 30000;
|
|
26
|
+
this.pingTimeoutThreshold = options.pingTimeoutThreshold || 3;
|
|
27
|
+
this.logger = options.logger || (0, logger_js_1.createWebSocketLogger)('PingPongManager');
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Регистрирует WebSocket клиент для указанного пространства имен
|
|
31
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
32
|
+
* @param {WebSocketClient} client WebSocket клиент
|
|
33
|
+
*/
|
|
34
|
+
registerClient(namespace, client) {
|
|
35
|
+
this.clients.set(namespace, client);
|
|
36
|
+
// Инициализируем статистику для namespace
|
|
37
|
+
if (!this.pingStats.has(namespace)) {
|
|
38
|
+
this.pingStats.set(namespace, {
|
|
39
|
+
namespace,
|
|
40
|
+
socketId: client.getSocketId(),
|
|
41
|
+
pingSent: 0,
|
|
42
|
+
pongReceived: 0,
|
|
43
|
+
averageRtt: 0,
|
|
44
|
+
minRtt: Number.MAX_SAFE_INTEGER,
|
|
45
|
+
maxRtt: 0,
|
|
46
|
+
lastRtt: 0,
|
|
47
|
+
lastPongTimestamp: 0,
|
|
48
|
+
isConnected: client.isConnected()
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
// Сбрасываем счетчик таймаутов
|
|
52
|
+
this.pingTimeouts.set(namespace, 0);
|
|
53
|
+
// Устанавливаем обработчик для события connection_pong
|
|
54
|
+
client.on(websocket_events_constants_js_1.WebSocketEvents.CONNECTION_PONG, this.createPongHandler(namespace));
|
|
55
|
+
this.logger.debug(`Зарегистрирован клиент для ${namespace}`, {
|
|
56
|
+
socketId: client.getSocketId()
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Удаляет регистрацию WebSocket клиента для указанного пространства имен
|
|
61
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
62
|
+
*/
|
|
63
|
+
unregisterClient(namespace) {
|
|
64
|
+
this.clients.delete(namespace);
|
|
65
|
+
this.logger.debug(`Удалена регистрация клиента для ${namespace}`);
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Создает обработчик для события pong
|
|
69
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
70
|
+
* @returns {PingPongEventHandler} Обработчик события pong
|
|
71
|
+
*/
|
|
72
|
+
createPongHandler(namespace) {
|
|
73
|
+
return (data) => {
|
|
74
|
+
// Обновляем статистику
|
|
75
|
+
const stats = this.pingStats.get(namespace);
|
|
76
|
+
if (stats) {
|
|
77
|
+
stats.pongReceived++;
|
|
78
|
+
stats.lastPongTimestamp = Date.now();
|
|
79
|
+
// Рассчитываем RTT, если есть метка времени эхо
|
|
80
|
+
if (data && data.echo) {
|
|
81
|
+
const rtt = Date.now() - data.echo;
|
|
82
|
+
stats.lastRtt = rtt;
|
|
83
|
+
// Обновляем min и max
|
|
84
|
+
stats.minRtt = Math.min(stats.minRtt, rtt);
|
|
85
|
+
stats.maxRtt = Math.max(stats.maxRtt, rtt);
|
|
86
|
+
// Обновляем среднее значение
|
|
87
|
+
stats.averageRtt = (stats.averageRtt * (stats.pongReceived - 1) + rtt) / stats.pongReceived;
|
|
88
|
+
}
|
|
89
|
+
// Сбрасываем счетчик таймаутов
|
|
90
|
+
this.pingTimeouts.set(namespace, 0);
|
|
91
|
+
// Обновляем ID сокета, если он изменился
|
|
92
|
+
const client = this.clients.get(namespace);
|
|
93
|
+
if (client) {
|
|
94
|
+
stats.socketId = client.getSocketId();
|
|
95
|
+
stats.isConnected = client.isConnected();
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
// Логируем получение pong
|
|
99
|
+
this.logger.debug(`Получен pong для ${namespace}`, {
|
|
100
|
+
rtt: stats?.lastRtt,
|
|
101
|
+
socketId: stats?.socketId
|
|
102
|
+
});
|
|
103
|
+
// Вызываем обработчики событий
|
|
104
|
+
this.notifyEventHandlers('connection_pong', {
|
|
105
|
+
namespace,
|
|
106
|
+
timestamp: Date.now(),
|
|
107
|
+
rtt: stats?.lastRtt,
|
|
108
|
+
socketId: stats?.socketId
|
|
109
|
+
});
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Уведомляет обработчики о событии
|
|
114
|
+
* @param {string} eventType Тип события
|
|
115
|
+
* @param {any} data Данные события
|
|
116
|
+
*/
|
|
117
|
+
notifyEventHandlers(eventType, data) {
|
|
118
|
+
const handlers = this.pingPongEventHandlers.get(eventType) || [];
|
|
119
|
+
for (const handler of handlers) {
|
|
120
|
+
try {
|
|
121
|
+
handler(data);
|
|
122
|
+
}
|
|
123
|
+
catch (error) {
|
|
124
|
+
this.logger.error(`Ошибка в обработчике события ${eventType}`, error);
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Включает автоматическую отправку ping-сообщений
|
|
130
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
131
|
+
* @returns {boolean} true, если механизм успешно включен
|
|
132
|
+
*/
|
|
133
|
+
enablePingPong(namespace) {
|
|
134
|
+
const client = this.clients.get(namespace);
|
|
135
|
+
if (!client || !client.isConnected()) {
|
|
136
|
+
this.logger.warn(`Невозможно включить ping/pong для неактивного соединения в ${namespace}`);
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
// Останавливаем существующий таймер, если есть
|
|
140
|
+
this.disablePingPong(namespace);
|
|
141
|
+
// Инициализируем статистику, если не была создана
|
|
142
|
+
if (!this.pingStats.has(namespace)) {
|
|
143
|
+
this.pingStats.set(namespace, {
|
|
144
|
+
namespace,
|
|
145
|
+
socketId: client.getSocketId(),
|
|
146
|
+
pingSent: 0,
|
|
147
|
+
pongReceived: 0,
|
|
148
|
+
averageRtt: 0,
|
|
149
|
+
minRtt: Number.MAX_SAFE_INTEGER,
|
|
150
|
+
maxRtt: 0,
|
|
151
|
+
lastRtt: 0,
|
|
152
|
+
lastPongTimestamp: 0,
|
|
153
|
+
isConnected: client.isConnected()
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
// Сбрасываем счетчик таймаутов
|
|
157
|
+
this.pingTimeouts.set(namespace, 0);
|
|
158
|
+
// Устанавливаем интервал отправки ping
|
|
159
|
+
const pingInterval = setInterval(() => {
|
|
160
|
+
const currentClient = this.clients.get(namespace);
|
|
161
|
+
if (!currentClient || !currentClient.isConnected()) {
|
|
162
|
+
this.disablePingPong(namespace);
|
|
163
|
+
return;
|
|
164
|
+
}
|
|
165
|
+
// Формируем данные ping
|
|
166
|
+
const pingData = {
|
|
167
|
+
timestamp: Date.now(),
|
|
168
|
+
echo: Date.now()
|
|
169
|
+
};
|
|
170
|
+
// Отправляем ping
|
|
171
|
+
const sent = currentClient.send({
|
|
172
|
+
event: websocket_events_constants_js_1.WebSocketEvents.CONNECTION_PING,
|
|
173
|
+
data: pingData
|
|
174
|
+
});
|
|
175
|
+
// Если успешно отправлено, обновляем статистику
|
|
176
|
+
if (sent) {
|
|
177
|
+
const stats = this.pingStats.get(namespace);
|
|
178
|
+
if (stats) {
|
|
179
|
+
stats.pingSent++;
|
|
180
|
+
}
|
|
181
|
+
this.logger.debug(`Отправлен ping для ${namespace}`, pingData);
|
|
182
|
+
}
|
|
183
|
+
else {
|
|
184
|
+
this.logger.warn(`Не удалось отправить ping для ${namespace}`);
|
|
185
|
+
}
|
|
186
|
+
// Проверяем таймаут
|
|
187
|
+
this.checkPingTimeout(namespace);
|
|
188
|
+
}, this.pingInterval);
|
|
189
|
+
// Сохраняем интервал
|
|
190
|
+
this.pingIntervals.set(namespace, pingInterval);
|
|
191
|
+
this.logger.info(`Включен механизм ping/pong для ${namespace} с интервалом ${this.pingInterval}ms`);
|
|
192
|
+
return true;
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Проверяет таймаут для ping/pong
|
|
196
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
197
|
+
*/
|
|
198
|
+
checkPingTimeout(namespace) {
|
|
199
|
+
const timeouts = this.pingTimeouts.get(namespace) || 0;
|
|
200
|
+
const stats = this.pingStats.get(namespace);
|
|
201
|
+
if (!stats)
|
|
202
|
+
return;
|
|
203
|
+
// Если разница между отправленными и полученными превышает порог,
|
|
204
|
+
// или последний pong был получен слишком давно
|
|
205
|
+
if ((stats.pingSent - stats.pongReceived > this.pingTimeoutThreshold) ||
|
|
206
|
+
(Date.now() - stats.lastPongTimestamp > this.pingInterval * this.pingTimeoutThreshold)) {
|
|
207
|
+
// Увеличиваем счетчик таймаутов
|
|
208
|
+
this.pingTimeouts.set(namespace, timeouts + 1);
|
|
209
|
+
if (timeouts + 1 >= this.pingTimeoutThreshold) {
|
|
210
|
+
// Соединение потеряно
|
|
211
|
+
this.logger.error(`Соединение потеряно (таймаут ping/pong) для ${namespace}`);
|
|
212
|
+
// Установка флага неактивного соединения
|
|
213
|
+
stats.isConnected = false;
|
|
214
|
+
// Уведомляем о таймауте соединения
|
|
215
|
+
this.notifyEventHandlers('connection_timeout', {
|
|
216
|
+
namespace,
|
|
217
|
+
socketId: stats.socketId,
|
|
218
|
+
timeouts: timeouts + 1,
|
|
219
|
+
threshold: this.pingTimeoutThreshold
|
|
220
|
+
});
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* Отключает автоматическую отправку ping-сообщений
|
|
226
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
227
|
+
*/
|
|
228
|
+
disablePingPong(namespace) {
|
|
229
|
+
const interval = this.pingIntervals.get(namespace);
|
|
230
|
+
if (interval) {
|
|
231
|
+
clearInterval(interval);
|
|
232
|
+
this.pingIntervals.delete(namespace);
|
|
233
|
+
this.logger.info(`Отключен механизм ping/pong для ${namespace}`);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
/**
|
|
237
|
+
* Отключает автоматическую отправку ping-сообщений для всех пространств имен
|
|
238
|
+
*/
|
|
239
|
+
disablePingPongAll() {
|
|
240
|
+
for (const [namespace, interval] of this.pingIntervals.entries()) {
|
|
241
|
+
clearInterval(interval);
|
|
242
|
+
this.pingIntervals.delete(namespace);
|
|
243
|
+
this.logger.info(`Отключен механизм ping/pong для ${namespace}`);
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* Получает статистику ping/pong для указанного пространства имен
|
|
248
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
249
|
+
* @returns {PingPongStats | null} Статистика ping/pong
|
|
250
|
+
*/
|
|
251
|
+
getPingStats(namespace) {
|
|
252
|
+
return this.pingStats.get(namespace) || null;
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Получает статистику ping/pong для всех пространств имен
|
|
256
|
+
* @returns {PingPongStats[]} Массив статистики ping/pong
|
|
257
|
+
*/
|
|
258
|
+
getAllPingStats() {
|
|
259
|
+
return Array.from(this.pingStats.values());
|
|
260
|
+
}
|
|
261
|
+
/**
|
|
262
|
+
* Добавляет обработчик для событий ping/pong
|
|
263
|
+
* @param {string} eventType Тип события (connection_timeout, connection_pong)
|
|
264
|
+
* @param {PingPongEventHandler} handler Обработчик события
|
|
265
|
+
*/
|
|
266
|
+
onPingPongEvent(eventType, handler) {
|
|
267
|
+
if (!this.pingPongEventHandlers.has(eventType)) {
|
|
268
|
+
this.pingPongEventHandlers.set(eventType, []);
|
|
269
|
+
}
|
|
270
|
+
const handlers = this.pingPongEventHandlers.get(eventType);
|
|
271
|
+
if (handlers) {
|
|
272
|
+
handlers.push(handler);
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Удаляет обработчик для событий ping/pong
|
|
277
|
+
* @param {string} eventType Тип события
|
|
278
|
+
* @param {PingPongEventHandler} [handler] Обработчик события (если не указан, удаляются все обработчики)
|
|
279
|
+
*/
|
|
280
|
+
offPingPongEvent(eventType, handler) {
|
|
281
|
+
if (!handler) {
|
|
282
|
+
// Если обработчик не указан, удаляем все обработчики для этого типа события
|
|
283
|
+
this.pingPongEventHandlers.delete(eventType);
|
|
284
|
+
}
|
|
285
|
+
else {
|
|
286
|
+
// Если обработчик указан, удаляем только его
|
|
287
|
+
const handlers = this.pingPongEventHandlers.get(eventType);
|
|
288
|
+
if (handlers) {
|
|
289
|
+
const index = handlers.findIndex(h => h === handler);
|
|
290
|
+
if (index !== -1) {
|
|
291
|
+
handlers.splice(index, 1);
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
/**
|
|
297
|
+
* Проверяет, включен ли механизм ping/pong для указанного пространства имен
|
|
298
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
299
|
+
* @returns {boolean} true, если механизм включен
|
|
300
|
+
*/
|
|
301
|
+
isPingPongEnabled(namespace) {
|
|
302
|
+
return this.pingIntervals.has(namespace);
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
exports.PingPongManager = PingPongManager;
|
|
306
|
+
//# sourceMappingURL=ping-pong-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ping-pong-manager.js","sourceRoot":"","sources":["../../../src/utils/ping-pong-manager.ts"],"names":[],"mappings":";;;AAEA,2CAA4D;AAE5D,8FAAyF;AAqBzF;;GAEG;AACH,MAAa,eAAe;IAyB1B;;;OAGG;IACH,YAAY,UAAkC,EAAE;QAnBhD,4BAA4B;QACX,kBAAa,GAA4C,IAAI,GAAG,EAAE,CAAC;QAEpF,2BAA2B;QACV,cAAS,GAA2C,IAAI,GAAG,EAAE,CAAC;QAE/E,4CAA4C;QAC3B,iBAAY,GAAoC,IAAI,GAAG,EAAE,CAAC;QAE3E,uCAAuC;QACtB,0BAAqB,GAA6C,IAAI,GAAG,EAAE,CAAC;QAE7F,qCAAqC;QACpB,YAAO,GAA6C,IAAI,GAAG,EAAE,CAAC;QAO7E,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,YAAY,IAAI,KAAK,CAAC;QAClD,IAAI,CAAC,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,IAAA,iCAAqB,EAAC,iBAAiB,CAAC,CAAC;IAC3E,CAAC;IAED;;;;OAIG;IACI,cAAc,CAAC,SAA6B,EAAE,MAAuB;QAC1E,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAEpC,0CAA0C;QAC1C,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE;gBAC5B,SAAS;gBACT,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;gBAC9B,QAAQ,EAAE,CAAC;gBACX,YAAY,EAAE,CAAC;gBACf,UAAU,EAAE,CAAC;gBACb,MAAM,EAAE,MAAM,CAAC,gBAAgB;gBAC/B,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,CAAC;gBACV,iBAAiB,EAAE,CAAC;gBACpB,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;aAClC,CAAC,CAAC;QACL,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAEpC,uDAAuD;QACvD,MAAM,CAAC,EAAE,CAAC,+CAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,CAAC,CAAC;QAEvE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,SAAS,EAAE,EAAE;YAC3D,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;SAC/B,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACI,gBAAgB,CAAC,SAA6B;QACnD,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,mCAAmC,SAAS,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;;;OAIG;IACK,iBAAiB,CAAC,SAA6B;QACrD,OAAO,CAAC,IAAS,EAAE,EAAE;YACnB,uBAAuB;YACvB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAI,KAAK,EAAE,CAAC;gBACV,KAAK,CAAC,YAAY,EAAE,CAAC;gBACrB,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAErC,gDAAgD;gBAChD,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;oBACtB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;oBACnC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;oBAEpB,sBAAsB;oBACtB,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAC3C,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;oBAE3C,6BAA6B;oBAC7B,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,YAAY,CAAC;gBAC9F,CAAC;gBAED,+BAA+B;gBAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBAEpC,yCAAyC;gBACzC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC3C,IAAI,MAAM,EAAE,CAAC;oBACX,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;oBACtC,KAAK,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC3C,CAAC;YACH,CAAC;YAED,0BAA0B;YAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,oBAAoB,SAAS,EAAE,EAAE;gBACjD,GAAG,EAAE,KAAK,EAAE,OAAO;gBACnB,QAAQ,EAAE,KAAK,EAAE,QAAQ;aAC1B,CAAC,CAAC;YAEH,+BAA+B;YAC/B,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,EAAE;gBAC1C,SAAS;gBACT,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,GAAG,EAAE,KAAK,EAAE,OAAO;gBACnB,QAAQ,EAAE,KAAK,EAAE,QAAQ;aAC1B,CAAC,CAAC;QACL,CAAC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACK,mBAAmB,CAAC,SAAiB,EAAE,IAAS;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAEjE,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;YAC/B,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC;YAChB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;YACxE,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,cAAc,CAAC,SAA6B;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE3C,IAAI,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,EAAE,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,8DAA8D,SAAS,EAAE,CAAC,CAAC;YAC5F,OAAO,KAAK,CAAC;QACf,CAAC;QAED,+CAA+C;QAC/C,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAEhC,kDAAkD;QAClD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,EAAE;gBAC5B,SAAS;gBACT,QAAQ,EAAE,MAAM,CAAC,WAAW,EAAE;gBAC9B,QAAQ,EAAE,CAAC;gBACX,YAAY,EAAE,CAAC;gBACf,UAAU,EAAE,CAAC;gBACb,MAAM,EAAE,MAAM,CAAC,gBAAgB;gBAC/B,MAAM,EAAE,CAAC;gBACT,OAAO,EAAE,CAAC;gBACV,iBAAiB,EAAE,CAAC;gBACpB,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE;aAClC,CAAC,CAAC;QACL,CAAC;QAED,+BAA+B;QAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;QAEpC,uCAAuC;QACvC,MAAM,YAAY,GAAG,WAAW,CAAC,GAAG,EAAE;YACpC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAElD,IAAI,CAAC,aAAa,IAAI,CAAC,aAAa,CAAC,WAAW,EAAE,EAAE,CAAC;gBACnD,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;gBAChC,OAAO;YACT,CAAC;YAED,wBAAwB;YACxB,MAAM,QAAQ,GAAG;gBACf,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE;aACjB,CAAC;YAEF,kBAAkB;YAClB,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,CAAC;gBAC9B,KAAK,EAAE,+CAAQ,CAAC,eAAe;gBAC/B,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;YAEH,gDAAgD;YAChD,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;gBAC5C,IAAI,KAAK,EAAE,CAAC;oBACV,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACnB,CAAC;gBAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;YACjE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,iCAAiC,SAAS,EAAE,CAAC,CAAC;YACjE,CAAC;YAED,oBAAoB;YACpB,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;QAEnC,CAAC,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAEtB,qBAAqB;QACrB,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAEhD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,kCAAkC,SAAS,iBAAiB,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC;QAEpG,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,gBAAgB,CAAC,SAA6B;QACpD,MAAM,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QACvD,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAE5C,IAAI,CAAC,KAAK;YAAE,OAAO;QAEnB,kEAAkE;QAClE,+CAA+C;QAC/C,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC;YACjE,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,oBAAoB,CAAC,EAAE,CAAC;YAC3F,gCAAgC;YAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,EAAE,QAAQ,GAAG,CAAC,CAAC,CAAC;YAE/C,IAAI,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC9C,sBAAsB;gBACtB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+CAA+C,SAAS,EAAE,CAAC,CAAC;gBAE9E,yCAAyC;gBACzC,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;gBAE1B,mCAAmC;gBACnC,IAAI,CAAC,mBAAmB,CAAC,oBAAoB,EAAE;oBAC7C,SAAS;oBACT,QAAQ,EAAE,KAAK,CAAC,QAAQ;oBACxB,QAAQ,EAAE,QAAQ,GAAG,CAAC;oBACtB,SAAS,EAAE,IAAI,CAAC,oBAAoB;iBACrC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;OAGG;IACI,eAAe,CAAC,SAA6B;QAClD,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAEnD,IAAI,QAAQ,EAAE,CAAC;YACb,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,SAAS,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;OAEG;IACI,kBAAkB;QACvB,KAAK,MAAM,CAAC,SAAS,EAAE,QAAQ,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,EAAE,CAAC;YACjE,aAAa,CAAC,QAAQ,CAAC,CAAC;YACxB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YACrC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mCAAmC,SAAS,EAAE,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,YAAY,CAAC,SAA6B;QAC/C,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IAC/C,CAAC;IAED;;;OAGG;IACI,eAAe;QACpB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACI,eAAe,CAAC,SAAiB,EAAE,OAA6B;QACrE,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YAC/C,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAChD,CAAC;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC3D,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,gBAAgB,CAAC,SAAiB,EAAE,OAA8B;QACvE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,4EAA4E;YAC5E,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAC/C,CAAC;aAAM,CAAC;YACN,6CAA6C;YAC7C,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YAC3D,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC;gBACrD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;oBACjB,QAAQ,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC5B,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;OAIG;IACI,iBAAiB,CAAC,SAA6B;QACpD,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;CACF;AAhWD,0CAgWC"}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.SessionManager = exports.MemorySessionTokenStore = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Класс для хранения токенов сессий в памяти
|
|
6
|
+
*/
|
|
7
|
+
class MemorySessionTokenStore {
|
|
8
|
+
constructor() {
|
|
9
|
+
/** Хранилище токенов */
|
|
10
|
+
this.tokens = new Map();
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Получить токен сессии для указанного пространства имен
|
|
14
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
15
|
+
* @returns {string | null} Токен сессии или null, если не найден
|
|
16
|
+
*/
|
|
17
|
+
getToken(namespace) {
|
|
18
|
+
return this.tokens.get(namespace) || null;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Сохранить токен сессии для указанного пространства имен
|
|
22
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
23
|
+
* @param {string} token Токен сессии
|
|
24
|
+
*/
|
|
25
|
+
saveToken(namespace, token) {
|
|
26
|
+
this.tokens.set(namespace, token);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Удалить токен сессии для указанного пространства имен
|
|
30
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
31
|
+
*/
|
|
32
|
+
removeToken(namespace) {
|
|
33
|
+
this.tokens.delete(namespace);
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* Проверить наличие токена для указанного пространства имен
|
|
37
|
+
* @param {WebSocketNamespace} namespace Пространство имен
|
|
38
|
+
* @returns {boolean} true, если токен есть
|
|
39
|
+
*/
|
|
40
|
+
hasToken(namespace) {
|
|
41
|
+
return this.tokens.has(namespace);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Очистить все токены
|
|
45
|
+
*/
|
|
46
|
+
clear() {
|
|
47
|
+
this.tokens.clear();
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
exports.MemorySessionTokenStore = MemorySessionTokenStore;
|
|
51
|
+
/**
|
|
52
|
+
* Класс для управления токенами сессий WebSocket
|
|
53
|
+
*/
|
|
54
|
+
class SessionManager {
|
|
55
|
+
/**
|
|
56
|
+
* Создает новый менеджер сессий
|
|
57
|
+
* @param {SessionManagerOptions} options Опции менеджера сессий
|
|
58
|
+
*/
|
|
59
|
+
constructor(options = {}) {
|
|
60
|
+
/** Хранилище токенов сессий */
|
|
61
|
+
this.sessionTokens = new Map();
|
|
62
|
+
this.enableSessionPersistence = options.enableSessionPersistence !== false;
|
|
63
|
+
this.logger = options.logger || {
|
|
64
|
+
debug: () => { },
|
|
65
|
+
info: () => { },
|
|
66
|
+
warn: () => { },
|
|
67
|
+
error: () => { },
|
|
68
|
+
withPrefix: () => this.logger
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* Сохраняет токен сессии для пространства имен
|
|
73
|
+
* @param {string} namespace Пространство имен
|
|
74
|
+
* @param {string} token Токен сессии
|
|
75
|
+
*/
|
|
76
|
+
saveSessionToken(namespace, token) {
|
|
77
|
+
if (!this.enableSessionPersistence) {
|
|
78
|
+
this.logger.debug(`Сохранение сессий отключено, игнорируем токен для ${namespace}`);
|
|
79
|
+
return;
|
|
80
|
+
}
|
|
81
|
+
this.logger.debug(`Сохранение токена сессии для ${namespace}`);
|
|
82
|
+
this.sessionTokens.set(namespace, token);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Получает токен сессии для пространства имен
|
|
86
|
+
* @param {string} namespace Пространство имен
|
|
87
|
+
* @returns {string | undefined} Токен сессии или undefined, если не найден
|
|
88
|
+
*/
|
|
89
|
+
getSessionToken(namespace) {
|
|
90
|
+
if (!this.enableSessionPersistence) {
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
const token = this.sessionTokens.get(namespace);
|
|
94
|
+
this.logger.debug(`Получение токена сессии для ${namespace}: ${token ? 'найден' : 'не найден'}`);
|
|
95
|
+
return token;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Удаляет токен сессии для пространства имен
|
|
99
|
+
* @param {string} namespace Пространство имен
|
|
100
|
+
*/
|
|
101
|
+
clearSessionToken(namespace) {
|
|
102
|
+
this.logger.debug(`Удаление токена сессии для ${namespace}`);
|
|
103
|
+
this.sessionTokens.delete(namespace);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Удаляет все токены сессий
|
|
107
|
+
*/
|
|
108
|
+
clearAllSessionTokens() {
|
|
109
|
+
this.logger.debug('Удаление всех токенов сессий');
|
|
110
|
+
this.sessionTokens.clear();
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
exports.SessionManager = SessionManager;
|
|
114
|
+
//# sourceMappingURL=session-manager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-manager.js","sourceRoot":"","sources":["../../../src/utils/session-manager.ts"],"names":[],"mappings":";;;AAuBA;;GAEG;AACH,MAAa,uBAAuB;IAApC;QACE,wBAAwB;QAChB,WAAM,GAAoC,IAAI,GAAG,EAAE,CAAC;IA2C9D,CAAC;IAzCC;;;;OAIG;IACI,QAAQ,CAAC,SAA6B;QAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,IAAI,CAAC;IAC5C,CAAC;IAED;;;;OAIG;IACI,SAAS,CAAC,SAA6B,EAAE,KAAa;QAC3D,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC;IAED;;;OAGG;IACI,WAAW,CAAC,SAA6B;QAC9C,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAChC,CAAC;IAED;;;;OAIG;IACI,QAAQ,CAAC,SAA6B;QAC3C,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACpC,CAAC;IAED;;OAEG;IACI,KAAK;QACV,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;IACtB,CAAC;CACF;AA7CD,0DA6CC;AAaD;;GAEG;AACH,MAAa,cAAc;IAUzB;;;OAGG;IACH,YAAY,UAAiC,EAAE;QAb/C,+BAA+B;QACvB,kBAAa,GAAwB,IAAI,GAAG,EAAE,CAAC;QAarD,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC,wBAAwB,KAAK,KAAK,CAAC;QAC3E,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI;YAC9B,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;YACf,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,IAAI,EAAE,GAAG,EAAE,GAAE,CAAC;YACd,KAAK,EAAE,GAAG,EAAE,GAAE,CAAC;YACf,UAAU,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM;SAC9B,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACI,gBAAgB,CAAC,SAAiB,EAAE,KAAa;QACtD,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,qDAAqD,SAAS,EAAE,CAAC,CAAC;YACpF,OAAO;QACT,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,SAAS,EAAE,CAAC,CAAC;QAC/D,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED;;;;OAIG;IACI,eAAe,CAAC,SAAiB;QACtC,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,CAAC;YACnC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B,SAAS,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;QAEjG,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;;OAGG;IACI,iBAAiB,CAAC,SAAiB;QACxC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,SAAS,EAAE,CAAC,CAAC;QAC7D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACI,qBAAqB;QAC1B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAClD,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF;AAxED,wCAwEC"}
|