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.
Files changed (131) hide show
  1. package/dist/cjs/api/projects-api.js +4 -6
  2. package/dist/cjs/api/projects-api.js.map +1 -1
  3. package/dist/cjs/{code-solver-sdk.js → code-solver-sdk-v2.js} +220 -271
  4. package/dist/cjs/code-solver-sdk-v2.js.map +1 -0
  5. package/dist/cjs/constants/websocket-events.constants.js +37 -1
  6. package/dist/cjs/constants/websocket-events.constants.js.map +1 -1
  7. package/dist/cjs/constants/websocket-namespaces.constants.js +20 -0
  8. package/dist/cjs/constants/websocket-namespaces.constants.js.map +1 -0
  9. package/dist/cjs/index.js +24 -49
  10. package/dist/cjs/index.js.map +1 -1
  11. package/dist/cjs/interfaces/websocket/callbacks.interfaces.js +3 -0
  12. package/dist/cjs/interfaces/websocket/callbacks.interfaces.js.map +1 -0
  13. package/dist/cjs/interfaces/websocket/client-options.interfaces.js +3 -0
  14. package/dist/cjs/interfaces/websocket/client-options.interfaces.js.map +1 -0
  15. package/dist/cjs/interfaces/websocket/events.interfaces.js +3 -0
  16. package/dist/cjs/interfaces/websocket/events.interfaces.js.map +1 -0
  17. package/dist/cjs/interfaces/websocket/stats.interfaces.js +3 -0
  18. package/dist/cjs/interfaces/websocket/stats.interfaces.js.map +1 -0
  19. package/dist/cjs/utils/code-solver-websocket-client.js +382 -1503
  20. package/dist/cjs/utils/code-solver-websocket-client.js.map +1 -1
  21. package/dist/cjs/utils/connection-state-manager.js +133 -0
  22. package/dist/cjs/utils/connection-state-manager.js.map +1 -0
  23. package/dist/cjs/utils/logger.js +106 -0
  24. package/dist/cjs/utils/logger.js.map +1 -0
  25. package/dist/cjs/utils/ping-pong-manager.js +306 -0
  26. package/dist/cjs/utils/ping-pong-manager.js.map +1 -0
  27. package/dist/cjs/utils/session-manager.js +114 -0
  28. package/dist/cjs/utils/session-manager.js.map +1 -0
  29. package/dist/cjs/ws/base-ws-client.js +286 -0
  30. package/dist/cjs/ws/base-ws-client.js.map +1 -0
  31. package/dist/cjs/ws/dependencies-ws-client.js +11 -0
  32. package/dist/cjs/ws/dependencies-ws-client.js.map +1 -0
  33. package/dist/cjs/ws/diagnostics-service.js +170 -0
  34. package/dist/cjs/ws/diagnostics-service.js.map +1 -0
  35. package/dist/cjs/ws/filesystem-ws-client.js +315 -0
  36. package/dist/cjs/ws/filesystem-ws-client.js.map +1 -0
  37. package/dist/cjs/ws/indexing-ws-client.js +223 -0
  38. package/dist/cjs/ws/indexing-ws-client.js.map +1 -0
  39. package/dist/cjs/ws/notifications-ws-client.js +12 -0
  40. package/dist/cjs/ws/notifications-ws-client.js.map +1 -0
  41. package/dist/cjs/ws/reasoning-ws-client.js +330 -0
  42. package/dist/cjs/ws/reasoning-ws-client.js.map +1 -0
  43. package/dist/esm/api/projects-api.js +4 -6
  44. package/dist/esm/api/projects-api.js.map +1 -1
  45. package/dist/esm/{code-solver-sdk.js → code-solver-sdk-v2.js} +220 -271
  46. package/dist/esm/code-solver-sdk-v2.js.map +1 -0
  47. package/dist/esm/constants/websocket-events.constants.js +36 -0
  48. package/dist/esm/constants/websocket-events.constants.js.map +1 -1
  49. package/dist/esm/constants/websocket-namespaces.constants.js +17 -0
  50. package/dist/esm/constants/websocket-namespaces.constants.js.map +1 -0
  51. package/dist/esm/index.js +22 -97
  52. package/dist/esm/index.js.map +1 -1
  53. package/dist/esm/interfaces/websocket/callbacks.interfaces.js +2 -0
  54. package/dist/esm/interfaces/websocket/callbacks.interfaces.js.map +1 -0
  55. package/dist/esm/interfaces/websocket/client-options.interfaces.js +2 -0
  56. package/dist/esm/interfaces/websocket/client-options.interfaces.js.map +1 -0
  57. package/dist/esm/interfaces/websocket/events.interfaces.js +2 -0
  58. package/dist/esm/interfaces/websocket/events.interfaces.js.map +1 -0
  59. package/dist/esm/interfaces/websocket/stats.interfaces.js +2 -0
  60. package/dist/esm/interfaces/websocket/stats.interfaces.js.map +1 -0
  61. package/dist/esm/utils/code-solver-websocket-client.js +381 -1503
  62. package/dist/esm/utils/code-solver-websocket-client.js.map +1 -1
  63. package/dist/esm/utils/connection-state-manager.js +129 -0
  64. package/dist/esm/utils/connection-state-manager.js.map +1 -0
  65. package/dist/esm/utils/logger.js +101 -0
  66. package/dist/esm/utils/logger.js.map +1 -0
  67. package/dist/esm/utils/ping-pong-manager.js +302 -0
  68. package/dist/esm/utils/ping-pong-manager.js.map +1 -0
  69. package/dist/esm/utils/session-manager.js +109 -0
  70. package/dist/esm/utils/session-manager.js.map +1 -0
  71. package/dist/esm/ws/base-ws-client.js +282 -0
  72. package/dist/esm/ws/base-ws-client.js.map +1 -0
  73. package/dist/esm/ws/dependencies-ws-client.js +7 -0
  74. package/dist/esm/ws/dependencies-ws-client.js.map +1 -0
  75. package/dist/esm/ws/diagnostics-service.js +166 -0
  76. package/dist/esm/ws/diagnostics-service.js.map +1 -0
  77. package/dist/esm/ws/filesystem-ws-client.js +311 -0
  78. package/dist/esm/ws/filesystem-ws-client.js.map +1 -0
  79. package/dist/esm/ws/indexing-ws-client.js +219 -0
  80. package/dist/esm/ws/indexing-ws-client.js.map +1 -0
  81. package/dist/esm/ws/notifications-ws-client.js +8 -0
  82. package/dist/esm/ws/notifications-ws-client.js.map +1 -0
  83. package/dist/esm/ws/reasoning-ws-client.js +326 -0
  84. package/dist/esm/ws/reasoning-ws-client.js.map +1 -0
  85. package/dist/types/api/projects-api.d.ts.map +1 -1
  86. package/dist/types/{code-solver-sdk.d.ts → code-solver-sdk-v2.d.ts} +82 -85
  87. package/dist/types/code-solver-sdk-v2.d.ts.map +1 -0
  88. package/dist/types/constants/websocket-events.constants.d.ts +33 -0
  89. package/dist/types/constants/websocket-events.constants.d.ts.map +1 -1
  90. package/dist/types/constants/websocket-namespaces.constants.d.ts +16 -0
  91. package/dist/types/constants/websocket-namespaces.constants.d.ts.map +1 -0
  92. package/dist/types/index.d.ts +20 -90
  93. package/dist/types/index.d.ts.map +1 -1
  94. package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts +30 -0
  95. package/dist/types/interfaces/websocket/callbacks.interfaces.d.ts.map +1 -0
  96. package/dist/types/interfaces/websocket/client-options.interfaces.d.ts +51 -0
  97. package/dist/types/interfaces/websocket/client-options.interfaces.d.ts.map +1 -0
  98. package/dist/types/interfaces/websocket/events.interfaces.d.ts +165 -0
  99. package/dist/types/interfaces/websocket/events.interfaces.d.ts.map +1 -0
  100. package/dist/types/interfaces/websocket/stats.interfaces.d.ts +72 -0
  101. package/dist/types/interfaces/websocket/stats.interfaces.d.ts.map +1 -0
  102. package/dist/types/utils/code-solver-websocket-client.d.ts +70 -616
  103. package/dist/types/utils/code-solver-websocket-client.d.ts.map +1 -1
  104. package/dist/types/utils/connection-state-manager.d.ts +94 -0
  105. package/dist/types/utils/connection-state-manager.d.ts.map +1 -0
  106. package/dist/types/utils/logger.d.ts +62 -0
  107. package/dist/types/utils/logger.d.ts.map +1 -0
  108. package/dist/types/utils/ping-pong-manager.d.ts +118 -0
  109. package/dist/types/utils/ping-pong-manager.d.ts.map +1 -0
  110. package/dist/types/utils/session-manager.d.ts +98 -0
  111. package/dist/types/utils/session-manager.d.ts.map +1 -0
  112. package/dist/types/ws/base-ws-client.d.ts +119 -0
  113. package/dist/types/ws/base-ws-client.d.ts.map +1 -0
  114. package/dist/types/ws/dependencies-ws-client.d.ts +6 -0
  115. package/dist/types/ws/dependencies-ws-client.d.ts.map +1 -0
  116. package/dist/types/ws/diagnostics-service.d.ts +93 -0
  117. package/dist/types/ws/diagnostics-service.d.ts.map +1 -0
  118. package/dist/types/ws/filesystem-ws-client.d.ts +203 -0
  119. package/dist/types/ws/filesystem-ws-client.d.ts.map +1 -0
  120. package/dist/types/ws/indexing-ws-client.d.ts +78 -0
  121. package/dist/types/ws/indexing-ws-client.d.ts.map +1 -0
  122. package/dist/types/ws/notifications-ws-client.d.ts +5 -0
  123. package/dist/types/ws/notifications-ws-client.d.ts.map +1 -0
  124. package/dist/types/ws/reasoning-ws-client.d.ts +87 -0
  125. package/dist/types/ws/reasoning-ws-client.d.ts.map +1 -0
  126. package/docs/AUTHENTICATION.md +31 -127
  127. package/docs/WEBSOCKET.md +51 -211
  128. package/package.json +1 -1
  129. package/dist/cjs/code-solver-sdk.js.map +0 -1
  130. package/dist/esm/code-solver-sdk.js.map +0 -1
  131. package/dist/types/code-solver-sdk.d.ts.map +0 -1
@@ -0,0 +1,286 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseWebSocketClient = void 0;
4
+ const websocket_client_js_1 = require("../utils/websocket-client.js");
5
+ const websocket_namespaces_constants_js_1 = require("../constants/websocket-namespaces.constants.js");
6
+ const websocket_events_constants_js_1 = require("../constants/websocket-events.constants.js");
7
+ const logger_js_1 = require("../utils/logger.js");
8
+ const session_manager_js_1 = require("../utils/session-manager.js");
9
+ const ping_pong_manager_js_1 = require("../utils/ping-pong-manager.js");
10
+ const connection_state_manager_js_1 = require("../utils/connection-state-manager.js");
11
+ /**
12
+ * Базовый абстрактный класс для всех WebSocket клиентов
13
+ */
14
+ class BaseWebSocketClient {
15
+ /**
16
+ * Создает новый базовый WebSocket клиент
17
+ * @param {WebSocketNamespace} namespace Пространство имен WebSocket
18
+ * @param {string} baseURL Базовый URL API
19
+ * @param {BaseWebSocketClientOptions} options Опции клиента
20
+ */
21
+ constructor(namespace, baseURL, options = {}) {
22
+ /** WebSocket клиент */
23
+ this.client = null;
24
+ this.namespace = namespace;
25
+ this.baseURL = baseURL.replace(/^http/, 'ws');
26
+ // Добавляем заголовок авторизации, если задан API ключ
27
+ this.options = {
28
+ ...options,
29
+ headers: {
30
+ ...(options.headers || {}),
31
+ ...(options.apiKey ? { 'Authorization': `Bearer ${options.apiKey}` } : {})
32
+ }
33
+ };
34
+ // Инициализируем логгер
35
+ this.logger = typeof options.logger === 'function'
36
+ ? (0, logger_js_1.createWebSocketLogger)(`WebSocket:${namespace}`, options.logger)
37
+ : (options.logger || (0, logger_js_1.createWebSocketLogger)(`WebSocket:${namespace}`));
38
+ // Инициализируем менеджеры
39
+ this.sessionManager = new session_manager_js_1.SessionManager({
40
+ enableSessionPersistence: options.enableSessionPersistence,
41
+ logger: this.logger.withPrefix('SessionManager')
42
+ });
43
+ this.pingPongManager = new ping_pong_manager_js_1.PingPongManager({
44
+ pingInterval: options.pingInterval,
45
+ pingTimeoutThreshold: options.pingTimeoutThreshold,
46
+ logger: this.logger.withPrefix('PingPongManager')
47
+ });
48
+ this.connectionStateManager = new connection_state_manager_js_1.ConnectionStateManager({
49
+ reconnectStrategy: options.reconnectStrategy === 'fibonacci' ? 'exponential' : options.reconnectStrategy,
50
+ retryDelay: options.retryDelay,
51
+ maxRetryDelay: options.maxRetryDelay,
52
+ logger: this.logger.withPrefix('ConnectionStateManager')
53
+ });
54
+ }
55
+ /**
56
+ * Подключается к серверу WebSocket
57
+ * @param {Record<string, any>} [params={}] Дополнительные параметры для подключения
58
+ * @returns {Promise<boolean>} Успешность подключения
59
+ */
60
+ async connect(params = {}) {
61
+ try {
62
+ // Если клиент уже существует, проверяем его состояние
63
+ if (this.client) {
64
+ if (this.client.isConnected()) {
65
+ this.logger.debug(`Уже подключен к ${this.namespace}`);
66
+ return true;
67
+ }
68
+ else {
69
+ // Закрываем существующее соединение
70
+ this.client.close();
71
+ this.client = null;
72
+ }
73
+ }
74
+ // Формируем URL для подключения
75
+ const url = this.buildConnectionUrl(params);
76
+ this.logger.debug(`Подключение к ${url}`, {
77
+ namespace: String(this.namespace),
78
+ params: Object.keys(params)
79
+ });
80
+ // Создаем новый WebSocket клиент
81
+ this.client = new websocket_client_js_1.WebSocketClient(url, {
82
+ ...this.options,
83
+ namespace: String(this.namespace),
84
+ // Преобразуем объект Logger в функцию логирования для WebSocketClient
85
+ logger: (level, message, data) => {
86
+ if (level === 'error')
87
+ this.logger.error(message, data);
88
+ else if (level === 'warn')
89
+ this.logger.warn(message, data);
90
+ else if (level === 'info')
91
+ this.logger.info(message, data);
92
+ else
93
+ this.logger.debug(message, data);
94
+ }
95
+ });
96
+ // Устанавливаем обработчики событий
97
+ this.setupEventHandlers();
98
+ // Подключаемся к серверу
99
+ await this.client.connect();
100
+ // Регистрируем клиент в менеджере ping/pong
101
+ this.pingPongManager.registerClient(this.namespace, this.client);
102
+ // Обновляем состояние подключения
103
+ this.connectionStateManager.registerSuccessfulConnection(this.namespace);
104
+ // Включаем механизм ping/pong, если настроено
105
+ if (this.options.enableAutoPing !== false) {
106
+ this.pingPongManager.enablePingPong(this.namespace);
107
+ }
108
+ return true;
109
+ }
110
+ catch (error) {
111
+ this.logger.error(`Ошибка при подключении к ${this.namespace}`, error);
112
+ // Обновляем состояние подключения
113
+ this.connectionStateManager.registerDisconnection(this.namespace);
114
+ return false;
115
+ }
116
+ }
117
+ /**
118
+ * Формирует URL для подключения
119
+ * @param {Record<string, any>} params Параметры для подключения
120
+ * @returns {string} URL для подключения
121
+ */
122
+ buildConnectionUrl(params) {
123
+ let baseUrl;
124
+ let namespaceStr = '';
125
+ // Добавляем namespace в URL путь (стандартный подход Socket.IO)
126
+ if (this.namespace !== websocket_namespaces_constants_js_1.WebSocketNamespace.DEFAULT) {
127
+ namespaceStr = String(this.namespace);
128
+ if (!namespaceStr.startsWith('/')) {
129
+ namespaceStr = '/' + namespaceStr;
130
+ }
131
+ }
132
+ // Формируем правильный URL для Socket.IO
133
+ if (this.baseURL.endsWith('/socket.io') || this.baseURL.endsWith('/socket.io/')) {
134
+ // Для случая когда URL заканчивается на /socket.io, убираем слеш
135
+ const cleanBaseUrl = this.baseURL.endsWith('/')
136
+ ? this.baseURL.slice(0, -1)
137
+ : this.baseURL;
138
+ // Добавляем namespace к URL
139
+ baseUrl = cleanBaseUrl + namespaceStr;
140
+ }
141
+ else {
142
+ // Для случая когда URL не содержит /socket.io
143
+ baseUrl = this.baseURL + namespaceStr;
144
+ }
145
+ // Создаем URL объект с параметрами
146
+ const url = new URL(baseUrl);
147
+ // Добавляем обязательные параметры для Socket.IO
148
+ url.searchParams.append('EIO', '4');
149
+ url.searchParams.append('transport', 'websocket');
150
+ // Добавляем параметры к URL
151
+ Object.entries(params).forEach(([key, value]) => {
152
+ if (value !== undefined) {
153
+ url.searchParams.append(key, String(value));
154
+ }
155
+ });
156
+ return url.toString();
157
+ }
158
+ /**
159
+ * Устанавливает обработчики событий для WebSocket клиента
160
+ */
161
+ setupEventHandlers() {
162
+ if (!this.client)
163
+ return;
164
+ // Добавляем обработчик для успешного подключения
165
+ this.client.on('open', () => {
166
+ this.logger.debug(`Подключение к ${this.namespace} установлено`, {
167
+ socketId: this.client?.getSocketId()
168
+ });
169
+ // Отправляем сообщение аутентификации, если задан API ключ
170
+ if (this.options.apiKey) {
171
+ this.authenticate();
172
+ }
173
+ });
174
+ // Логирование ошибок
175
+ this.client.on('error', (error) => {
176
+ this.logger.error(`Ошибка соединения с ${this.namespace}`, error);
177
+ });
178
+ // Логирование разъединений
179
+ this.client.on('close', (event) => {
180
+ this.logger.debug(`Соединение с ${this.namespace} закрыто: ${event.code || 'нет кода'}, ${event.reason || 'Причина не указана'}`);
181
+ // Обновляем состояние подключения
182
+ this.connectionStateManager.registerDisconnection(this.namespace);
183
+ // Отключаем ping/pong
184
+ this.pingPongManager.disablePingPong(this.namespace);
185
+ });
186
+ }
187
+ /**
188
+ * Отправляет аутентификационные данные на сервер
189
+ */
190
+ authenticate() {
191
+ if (!this.client || !this.options.apiKey)
192
+ return;
193
+ try {
194
+ this.logger.debug(`Отправка аутентификации для ${this.namespace}`);
195
+ // Отправляем сообщение аутентификации
196
+ this.send(websocket_events_constants_js_1.WebSocketEvents.AUTHENTICATE, {
197
+ token: this.options.apiKey
198
+ });
199
+ }
200
+ catch (error) {
201
+ this.logger.error(`Ошибка при отправке аутентификации: ${error instanceof Error ? error.message : String(error)}`);
202
+ }
203
+ }
204
+ /**
205
+ * Отключается от сервера WebSocket
206
+ */
207
+ disconnect() {
208
+ // Отключаем ping/pong
209
+ this.pingPongManager.disablePingPong(this.namespace);
210
+ // Закрываем соединение
211
+ if (this.client) {
212
+ this.client.close();
213
+ this.client = null;
214
+ }
215
+ // Обновляем состояние подключения
216
+ this.connectionStateManager.registerDisconnection(this.namespace);
217
+ this.logger.debug(`Отключено от ${this.namespace}`);
218
+ }
219
+ /**
220
+ * Проверяет, подключен ли клиент к серверу
221
+ * @returns {boolean} true, если клиент подключен
222
+ */
223
+ isConnected() {
224
+ return !!this.client && this.client.isConnected();
225
+ }
226
+ /**
227
+ * Получает ID сокета
228
+ * @returns {string | null} ID сокета или null, если не подключен
229
+ */
230
+ getSocketId() {
231
+ return this.client ? this.client.getSocketId() : null;
232
+ }
233
+ /**
234
+ * Отправляет событие на сервер
235
+ * @param {string} eventType Тип события
236
+ * @param {any} [data] Данные события
237
+ * @returns {boolean} Успешность отправки
238
+ */
239
+ send(eventType, data) {
240
+ if (!this.client) {
241
+ this.logger.warn(`Попытка отправить событие ${eventType}, но клиент не подключен`);
242
+ return false;
243
+ }
244
+ return this.client.send({
245
+ event: eventType,
246
+ data
247
+ });
248
+ }
249
+ /**
250
+ * Отправляет событие и ожидает ответа
251
+ * @param {string} eventType Тип события
252
+ * @param {any} data Данные события
253
+ * @param {number} [timeout=5000] Таймаут ожидания ответа в миллисекундах
254
+ * @returns {Promise<any>} Ответ сервера
255
+ */
256
+ async emitWithAck(eventType, data, timeout = 5000) {
257
+ if (!this.client) {
258
+ throw new Error(`Попытка отправить событие ${eventType} с подтверждением, но клиент не подключен`);
259
+ }
260
+ return this.client.emitWithAck(eventType, data, timeout);
261
+ }
262
+ /**
263
+ * Добавляет обработчик события
264
+ * @param {string} eventType Тип события
265
+ * @param {(data: any) => void} handler Обработчик события
266
+ */
267
+ on(eventType, handler) {
268
+ if (!this.client) {
269
+ this.logger.warn(`Попытка добавить обработчик для события ${eventType}, но клиент не подключен`);
270
+ return;
271
+ }
272
+ this.client.on(eventType, handler);
273
+ }
274
+ /**
275
+ * Удаляет обработчик события
276
+ * @param {string} eventType Тип события
277
+ * @param {(data: any) => void} [handler] Обработчик события (если не указан, удаляются все обработчики)
278
+ */
279
+ off(eventType, handler) {
280
+ if (!this.client)
281
+ return;
282
+ this.client.off(eventType, handler);
283
+ }
284
+ }
285
+ exports.BaseWebSocketClient = BaseWebSocketClient;
286
+ //# sourceMappingURL=base-ws-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base-ws-client.js","sourceRoot":"","sources":["../../../src/ws/base-ws-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DependenciesWsClient = void 0;
4
+ const base_ws_client_1 = require("./base-ws-client");
5
+ class DependenciesWsClient extends base_ws_client_1.BaseWebSocketClient {
6
+ constructor(namespace, baseURL, options = {}) {
7
+ super(namespace, baseURL, options);
8
+ }
9
+ }
10
+ exports.DependenciesWsClient = DependenciesWsClient;
11
+ //# sourceMappingURL=dependencies-ws-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dependencies-ws-client.js","sourceRoot":"","sources":["../../../src/ws/dependencies-ws-client.ts"],"names":[],"mappings":";;;AAAA,qDAAmF;AAGnF,MAAa,oBAAqB,SAAQ,oCAAmB;IAC3D,YACE,SAA6B,EAC7B,OAAe,EACf,UAAsC,EAAE;QAExC,KAAK,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACrC,CAAC;CAEF;AATD,oDASC"}
@@ -0,0 +1,170 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DiagnosticsService = void 0;
4
+ const session_manager_js_1 = require("../utils/session-manager.js");
5
+ const ping_pong_manager_js_1 = require("../utils/ping-pong-manager.js");
6
+ const connection_state_manager_js_1 = require("../utils/connection-state-manager.js");
7
+ const logger_js_1 = require("../utils/logger.js");
8
+ /**
9
+ * Сервис для диагностики WebSocket соединений
10
+ */
11
+ class DiagnosticsService {
12
+ /**
13
+ * Создает новый сервис диагностики
14
+ * @param {DiagnosticsServiceOptions} options Опции сервиса
15
+ */
16
+ constructor(options = {}) {
17
+ /** Таймер для проверки здоровья соединений */
18
+ this.healthCheckTimer = null;
19
+ /** Клиенты WebSocket по namespace */
20
+ this.clients = new Map();
21
+ this.healthCheckInterval = options.healthCheckInterval || 30000;
22
+ this.logger = options.logger || (0, logger_js_1.createWebSocketLogger)('DiagnosticsService');
23
+ this.sessionManager = options.sessionManager || new session_manager_js_1.SessionManager();
24
+ this.pingPongManager = options.pingPongManager || new ping_pong_manager_js_1.PingPongManager();
25
+ this.connectionStateManager = options.connectionStateManager || new connection_state_manager_js_1.ConnectionStateManager();
26
+ }
27
+ /**
28
+ * Регистрирует WebSocket клиент для мониторинга
29
+ * @param {WebSocketNamespace} namespace Пространство имен
30
+ * @param {WebSocketClient} client WebSocket клиент
31
+ */
32
+ registerClient(namespace, client) {
33
+ this.clients.set(namespace, client);
34
+ this.logger.debug(`Зарегистрирован клиент для ${namespace}`, {
35
+ socketId: client.getSocketId()
36
+ });
37
+ }
38
+ /**
39
+ * Удаляет регистрацию WebSocket клиента
40
+ * @param {WebSocketNamespace} namespace Пространство имен
41
+ */
42
+ unregisterClient(namespace) {
43
+ this.clients.delete(namespace);
44
+ this.logger.debug(`Удалена регистрация клиента для ${namespace}`);
45
+ }
46
+ /**
47
+ * Запускает периодическую проверку здоровья соединений
48
+ * @returns {boolean} true, если проверка успешно запущена
49
+ */
50
+ startHealthCheck() {
51
+ // Останавливаем существующую проверку, если она есть
52
+ this.stopHealthCheck();
53
+ this.healthCheckTimer = setInterval(() => {
54
+ this.performHealthCheck();
55
+ }, this.healthCheckInterval);
56
+ this.logger.info(`Запущена периодическая проверка здоровья соединений с интервалом ${this.healthCheckInterval}ms`);
57
+ return true;
58
+ }
59
+ /**
60
+ * Останавливает периодическую проверку здоровья соединений
61
+ */
62
+ stopHealthCheck() {
63
+ if (this.healthCheckTimer) {
64
+ clearInterval(this.healthCheckTimer);
65
+ this.healthCheckTimer = null;
66
+ this.logger.info('Остановлена периодическая проверка здоровья соединений');
67
+ }
68
+ }
69
+ /**
70
+ * Выполняет проверку здоровья соединений
71
+ */
72
+ performHealthCheck() {
73
+ for (const [namespace, client] of this.clients.entries()) {
74
+ try {
75
+ // Проверяем соединение через WebSocket клиент
76
+ if (!client.isConnected()) {
77
+ this.logger.warn(`Соединение с ${namespace} не активно`);
78
+ continue;
79
+ }
80
+ // Проверяем статистику ping/pong
81
+ const stats = this.pingPongManager.getPingStats(namespace);
82
+ if (stats) {
83
+ const now = Date.now();
84
+ // Если последний pong был получен слишком давно
85
+ if (stats.lastPongTimestamp && now - stats.lastPongTimestamp > this.healthCheckInterval * 2) {
86
+ this.logger.warn(`Долгое отсутствие активности для ${namespace}, последний pong: ${new Date(stats.lastPongTimestamp).toISOString()}`);
87
+ // Отправляем проверочный ping для обновления статистики
88
+ client.send({
89
+ event: 'connection_health_check',
90
+ data: { timestamp: now, echo: now }
91
+ });
92
+ }
93
+ }
94
+ }
95
+ catch (error) {
96
+ this.logger.error(`Ошибка при проверке здоровья соединения ${namespace}`, error);
97
+ }
98
+ }
99
+ }
100
+ /**
101
+ * Выполняет диагностику соединения
102
+ * @param {WebSocketNamespace} namespace Пространство имен
103
+ * @returns {ConnectionDiagnostics} Диагностическая информация
104
+ */
105
+ diagnoseConnection(namespace) {
106
+ const client = this.clients.get(namespace);
107
+ const stats = this.pingPongManager.getPingStats(namespace);
108
+ const state = this.connectionStateManager.getState(namespace);
109
+ const sessionToken = this.sessionManager.getSessionToken(namespace);
110
+ return {
111
+ namespace,
112
+ isConnected: client?.isConnected() || false,
113
+ socketId: client?.getSocketId() || null,
114
+ lastActivity: stats?.lastPongTimestamp || 0,
115
+ rtt: {
116
+ current: stats?.lastRtt || -1,
117
+ min: stats?.minRtt === Number.MAX_SAFE_INTEGER ? -1 : (stats?.minRtt || -1),
118
+ max: stats?.maxRtt || -1,
119
+ avg: stats?.averageRtt || -1
120
+ },
121
+ pingSent: stats?.pingSent || 0,
122
+ pongReceived: stats?.pongReceived || 0,
123
+ missedPongs: (stats?.pingSent || 0) - (stats?.pongReceived || 0),
124
+ timeoutCount: 0, // Это значение не хранится в PingPongManager, нужно дорабатывать логику
125
+ reconnectAttempts: state.reconnectAttempts,
126
+ lastConnectTime: state.lastConnectTime,
127
+ sessionRecovery: {
128
+ hasSessionToken: !!sessionToken,
129
+ tokenLength: sessionToken?.length || 0,
130
+ wasRecovered: !!sessionToken && (stats?.pongReceived || 0) > 0
131
+ }
132
+ };
133
+ }
134
+ /**
135
+ * Выполняет диагностику всех соединений
136
+ * @returns {Record<string, ConnectionDiagnostics>} Диагностическая информация по всем соединениям
137
+ */
138
+ diagnoseAllConnections() {
139
+ const result = {};
140
+ // Проверяем каждое зарегистрированное пространство имен
141
+ for (const namespace of this.clients.keys()) {
142
+ result[String(namespace)] = this.diagnoseConnection(namespace);
143
+ }
144
+ return result;
145
+ }
146
+ /**
147
+ * Получает статистику ping/pong для указанного пространства имен
148
+ * @param {WebSocketNamespace} namespace Пространство имен
149
+ * @returns {PingPongStats | null} Статистика ping/pong
150
+ */
151
+ getPingStats(namespace) {
152
+ return this.pingPongManager.getPingStats(namespace);
153
+ }
154
+ /**
155
+ * Возвращает функцию-обработчик для pong-ответов, которая рассчитывает RTT
156
+ * @returns {(data: any) => void} Функция-обработчик
157
+ */
158
+ getPongHandler() {
159
+ return (data) => {
160
+ if (data && data.echo) {
161
+ const rtt = Date.now() - data.echo;
162
+ this.logger.debug(`[PONG] RTT: ${rtt}ms, namespace: ${data.namespace || 'unknown'}`);
163
+ return rtt;
164
+ }
165
+ return -1;
166
+ };
167
+ }
168
+ }
169
+ exports.DiagnosticsService = DiagnosticsService;
170
+ //# sourceMappingURL=diagnostics-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics-service.js","sourceRoot":"","sources":["../../../src/ws/diagnostics-service.ts"],"names":[],"mappings":"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"}