solver-sdk 1.5.1 → 1.6.1

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/README.md CHANGED
@@ -469,4 +469,109 @@ const sdk = new CodeSolverSDK({
469
469
 
470
470
  - Улучшена совместимость с CommonJS и ESM модулями
471
471
  - Добавлена поддержка WebSocket соединений
472
- - Добавлена встроенная зависимость ws для Node.js
472
+ - Добавлена встроенная зависимость ws для Node.js
473
+
474
+ ## Режим мышления (Thinking Mode)
475
+
476
+ Режим мышления позволяет получать промежуточные рассуждения модели в процессе формирования ответа. Это особенно полезно для отладки и понимания логики работы AI.
477
+
478
+ ### Использование через REST API
479
+
480
+ ```javascript
481
+ const { CodeSolverSDK } = require('solver-sdk');
482
+
483
+ const sdk = new CodeSolverSDK({
484
+ baseURL: 'https://api.example.com',
485
+ apiKey: 'ваш-ключ-api'
486
+ });
487
+
488
+ // Запрос с включенным режимом мышления
489
+ const response = await sdk.chat.chat([
490
+ { role: 'user', content: 'Как реализовать алгоритм сортировки слиянием?' }
491
+ ], {
492
+ model: 'Claude',
493
+ thinking: true // Активируем режим мышления
494
+ });
495
+
496
+ // Вывод хода мыслей
497
+ if (response.choices && response.choices[0] && response.choices[0].thinking) {
498
+ console.log('Ход мыслей модели:');
499
+ console.log(response.choices[0].thinking);
500
+ }
501
+
502
+ // Вывод финального ответа
503
+ console.log('Ответ модели:');
504
+ console.log(response.choices[0].message.content);
505
+ ```
506
+
507
+ ### Использование через WebSocket (потоковое получение событий мышления)
508
+
509
+ ```javascript
510
+ const { CodeSolverSDK } = require('solver-sdk');
511
+
512
+ async function streamThinking() {
513
+ const sdk = new CodeSolverSDK({
514
+ baseURL: 'https://api.example.com',
515
+ apiKey: 'ваш-ключ-api'
516
+ });
517
+
518
+ // Получаем WebSocket клиент
519
+ const wsClient = sdk.getWebSocketClient();
520
+
521
+ // Обработчик событий мышления
522
+ const handleThinking = (data) => {
523
+ console.log('Новый шаг мышления:', data.content);
524
+ };
525
+
526
+ try {
527
+ // Подключаемся к WebSocket серверу с обработчиком мышления
528
+ const reasoningId = await wsClient.connectToThinkingSession('system', handleThinking);
529
+
530
+ // Создаем рассуждение
531
+ const result = await sdk.reasoning.createReasoning({
532
+ projectId: 'project-123',
533
+ query: 'Объясни асинхронное программирование в JavaScript',
534
+ options: {
535
+ thinking: true,
536
+ socketId: wsClient.getSocketId()
537
+ }
538
+ });
539
+
540
+ // Запускаем рассуждение
541
+ await sdk.reasoning.startReasoning(result.id);
542
+
543
+ console.log('Рассуждение запущено, шаги мышления будут приходить через WebSocket');
544
+ } catch (error) {
545
+ console.error('Ошибка:', error);
546
+ }
547
+ }
548
+
549
+ streamThinking();
550
+ ```
551
+
552
+ ### Примеры использования
553
+
554
+ Полные примеры кода можно найти в директории `examples`:
555
+ - `examples/chat-example.js` - пример использования thinking в чате
556
+ - `examples/thinking-example.js` - пример использования thinking через WebSocket
557
+
558
+ ### Параметры режима мышления
559
+
560
+ Параметр `level` позволяет настроить детализацию процесса мышления:
561
+
562
+ - `CONCISE` - краткие шаги рассуждения
563
+ - `STANDARD` - стандартный уровень детализации (по умолчанию)
564
+ - `DETAILED` - подробное рассуждение с промежуточными шагами
565
+ - `VERBOSE` - максимальная детализация процесса мышления
566
+
567
+ ```javascript
568
+ const result = await sdk.reasoning.createReasoning({
569
+ projectId: 'project-123',
570
+ query: 'Объясни, как работает blockchain',
571
+ level: 'DETAILED', // Уровень детализации мышления
572
+ options: {
573
+ thinking: true,
574
+ socketId: wsClient.getSocketId()
575
+ }
576
+ });
577
+ ```
@@ -1 +1 @@
1
- {"version":3,"file":"reasoning-api.js","sourceRoot":"","sources":["../../../src/api/reasoning-api.ts"],"names":[],"mappings":";;;AA2KA;;GAEG;AACH,MAAa,YAAY;IAOvB;;;;OAIG;IACH,YAAY,UAAsB,EAAE,WAAyB;QAC3D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,aAAa,CAAC,MAA4B;QACrD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,YAAY,CAAC,WAAmB;QAC3C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,eAAe,CAAC,OAAyB;QACpD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,cAAc,CAAC,WAAmB;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,2BAA2B,WAAW,EAAE,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,aAAa,CAAC,WAAmB;QAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,4BAA4B,WAAW,EAAE,CAAC,CAAC;IACzE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,eAAe,CAAC,WAAmB;QAC9C,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW,CAAC,WAAmB;QAC1C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,qBAAqB,WAAW,WAAW,CAAC,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC;IACvE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,SAAS;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/C,CAAC;CACF;AAjGD,oCAiGC"}
1
+ {"version":3,"file":"reasoning-api.js","sourceRoot":"","sources":["../../../src/api/reasoning-api.ts"],"names":[],"mappings":";;;AAqLA;;GAEG;AACH,MAAa,YAAY;IAOvB;;;;OAIG;IACH,YAAY,UAAsB,EAAE,WAAyB;QAC3D,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,aAAa,CAAC,MAA4B;QACrD,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,YAAY,CAAC,WAAmB;QAC3C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAC;IACjE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,eAAe,CAAC,OAAyB;QACpD,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,0BAA0B,EAAE,OAAO,CAAC,CAAC;IACnE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,cAAc,CAAC,WAAmB;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,2BAA2B,WAAW,EAAE,CAAC,CAAC;IACxE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,aAAa,CAAC,WAAmB;QAC5C,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,4BAA4B,WAAW,EAAE,CAAC,CAAC;IACzE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,eAAe,CAAC,WAAmB;QAC9C,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,qBAAqB,WAAW,EAAE,CAAC,CAAC;IACpE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,WAAW,CAAC,WAAmB;QAC1C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,qBAAqB,WAAW,WAAW,CAAC,CAAC;IAC1E,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,gBAAgB,CAAC,SAAiB;QAC7C,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,6BAA6B,SAAS,EAAE,CAAC,CAAC;IACvE,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,SAAS;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/C,CAAC;CACF;AAjGD,oCAiGC"}
@@ -26,12 +26,16 @@ class CodeSolverWebSocketClient {
26
26
  * @param {CodeSolverWebSocketOptions} [options] Опции клиента
27
27
  */
28
28
  constructor(baseURL, options = {}) {
29
+ /** Пространство имен для Socket.IO */
30
+ this.namespace = '';
29
31
  /** WebSocket клиенты для разных пространств имен */
30
32
  this.clients = new Map();
31
33
  /** Активная сессия рассуждения */
32
34
  this.activeReasoningId = null;
33
35
  /** Активная сессия индексации */
34
36
  this.activeProjectId = null;
37
+ /** Обработчики событий мышления */
38
+ this.thinkingEventHandlers = new Map();
35
39
  this.baseURL = baseURL.replace(/^http/, 'ws');
36
40
  this.options = {
37
41
  ...options,
@@ -40,6 +44,25 @@ class CodeSolverWebSocketClient {
40
44
  ...(options.apiKey ? { 'Authorization': `Bearer ${options.apiKey}` } : {})
41
45
  }
42
46
  };
47
+ // Инициализируем пространство имен
48
+ this.namespace = String(WebSocketNamespace.REASONING);
49
+ }
50
+ /**
51
+ * Логирование сообщений
52
+ * @param {string} level Уровень логирования ('info', 'debug', 'error')
53
+ * @param {string} message Сообщение для логирования
54
+ * @param {any} [data] Дополнительные данные для логирования
55
+ */
56
+ logger(level, message, data) {
57
+ if (level === 'error') {
58
+ console.error(`[CodeSolverWebSocket] ${message}`, data);
59
+ }
60
+ else if (level === 'info') {
61
+ console.info(`[CodeSolverWebSocket] ${message}`, data);
62
+ }
63
+ else {
64
+ console.debug(`[CodeSolverWebSocket] ${message}`, data);
65
+ }
43
66
  }
44
67
  /**
45
68
  * Подключается к пространству имен WebSocket
@@ -168,12 +191,29 @@ class CodeSolverWebSocketClient {
168
191
  }
169
192
  // Сохраняем активный идентификатор рассуждения
170
193
  this.activeReasoningId = id;
171
- // Подключаемся к пространству имен
172
194
  try {
173
- await this.connect(WebSocketNamespace.REASONING, { reasoningId: id });
174
- return true;
195
+ // Подключаемся к пространству имен
196
+ await this.connect(WebSocketNamespace.REASONING);
197
+ // Получаем клиент
198
+ const client = this.clients.get(WebSocketNamespace.REASONING);
199
+ if (!client) {
200
+ throw new Error(`Не удалось получить WebSocket клиент для ${WebSocketNamespace.REASONING}`);
201
+ }
202
+ // Отправляем запрос на присоединение к сессии рассуждения с callback
203
+ return new Promise((resolve, reject) => {
204
+ client.sendSocketIOEvent('join_reasoning', { reasoningId: id }, (response) => {
205
+ if (response.success === false) {
206
+ this.logger('error', `Ошибка при присоединении к сессии рассуждения: ${response.error || 'Неизвестная ошибка'}`);
207
+ reject(new Error(response.error || 'Не удалось присоединиться к сессии рассуждения'));
208
+ return;
209
+ }
210
+ this.logger('info', `Успешно присоединился к сессии рассуждения ${id}`);
211
+ resolve(true);
212
+ }, this.namespace);
213
+ });
175
214
  }
176
215
  catch (error) {
216
+ this.logger('error', `Ошибка при подключении к сессии рассуждения: ${error instanceof Error ? error.message : String(error)}`);
177
217
  return false;
178
218
  }
179
219
  }
@@ -381,6 +421,202 @@ class CodeSolverWebSocketClient {
381
421
  isConnectedToNotifications() {
382
422
  return this.isConnected(WebSocketNamespace.DEFAULT);
383
423
  }
424
+ /**
425
+ * Получает ID сокета для указанного пространства имен
426
+ * @param {WebSocketNamespace} [namespace=WebSocketNamespace.REASONING] Пространство имен
427
+ * @returns {string|null} ID сокета или null, если соединение не установлено
428
+ */
429
+ getSocketId(namespace = WebSocketNamespace.REASONING) {
430
+ const client = this.clients.get(namespace);
431
+ if (!client || !client.isConnected()) {
432
+ console.warn(`[WsClientWrapper] getSocketId: Нет активных соединений с Socket.IO сервером для ${namespace}`);
433
+ return null;
434
+ }
435
+ return client.getSocketId();
436
+ }
437
+ /**
438
+ * Подписывается на события мышления
439
+ * @param {string} reasoningId Идентификатор рассуждения
440
+ * @param {Function} handler Обработчик событий мышления
441
+ * @returns {void}
442
+ */
443
+ subscribeToThinking(reasoningId, handler) {
444
+ // Сохраняем обработчик
445
+ this.thinkingEventHandlers.set(reasoningId, handler);
446
+ // Получаем клиент рассуждений
447
+ const client = this.clients.get(WebSocketNamespace.REASONING);
448
+ if (!client) {
449
+ throw new Error('Не подключен к пространству имен рассуждения');
450
+ }
451
+ // Подписываемся на события мышления
452
+ client.on(`thinking:${reasoningId}`, (data) => {
453
+ handler(data);
454
+ });
455
+ // Дублируем подписку для полной совместимости
456
+ client.on(`reasoning:thinking:${reasoningId}`, (data) => {
457
+ handler(data);
458
+ });
459
+ }
460
+ /**
461
+ * Отписывается от событий мышления
462
+ * @param {string} reasoningId Идентификатор рассуждения
463
+ * @returns {void}
464
+ */
465
+ unsubscribeFromThinking(reasoningId) {
466
+ // Удаляем обработчик
467
+ this.thinkingEventHandlers.delete(reasoningId);
468
+ // Получаем клиент рассуждений
469
+ const client = this.clients.get(WebSocketNamespace.REASONING);
470
+ if (!client)
471
+ return;
472
+ // Отписываемся от событий
473
+ client.off(`thinking:${reasoningId}`);
474
+ client.off(`reasoning:thinking:${reasoningId}`);
475
+ }
476
+ /**
477
+ * Подключается к сессии рассуждения с thinking
478
+ * @param {string} [reasoningId="system"] Идентификатор рассуждения
479
+ * @param {Function} [thinkingHandler] Обработчик событий мышления
480
+ * @returns {Promise<string>} Идентификатор сессии рассуждения
481
+ */
482
+ async connectToThinkingSession(reasoningId = "system", thinkingHandler) {
483
+ try {
484
+ // Подключаемся к пространству имен
485
+ await this.connect(WebSocketNamespace.REASONING);
486
+ // Получаем клиент
487
+ const client = this.clients.get(WebSocketNamespace.REASONING);
488
+ if (!client) {
489
+ throw new Error(`Не удалось получить WebSocket клиент для ${WebSocketNamespace.REASONING}`);
490
+ }
491
+ // Если reasoningId == "system", сервер заменит его на новый
492
+ // с префиксом "system-". Для получения нового ID нужно подписаться
493
+ // на событие создания рассуждения.
494
+ if (reasoningId === "system") {
495
+ // Будем ждать ответа о создании рассуждения
496
+ return new Promise((resolve, reject) => {
497
+ // Устанавливаем таймаут
498
+ const timeout = setTimeout(() => {
499
+ reject(new Error('Таймаут ожидания ответа о создании рассуждения'));
500
+ }, 10000);
501
+ // Подписываемся на событие создания рассуждения
502
+ client.once('create_reasoning_response', (data) => {
503
+ clearTimeout(timeout);
504
+ if (data.error) {
505
+ reject(new Error(`Ошибка создания рассуждения: ${data.error}`));
506
+ return;
507
+ }
508
+ const newReasoningId = data.reasoningId;
509
+ this.activeReasoningId = newReasoningId;
510
+ // Отправляем запрос на присоединение к сессии рассуждения
511
+ client.sendSocketIOEvent('join_reasoning', { reasoningId: newReasoningId }, (joinResponse) => {
512
+ if (joinResponse.success === false) {
513
+ reject(new Error(`Ошибка при присоединении к сессии рассуждения: ${joinResponse.error || 'Неизвестная ошибка'}`));
514
+ return;
515
+ }
516
+ // Отправляем запрос на запуск рассуждения
517
+ client.sendSocketIOEvent('start_reasoning', { reasoningId: newReasoningId }, (startResponse) => {
518
+ if (startResponse.success === false) {
519
+ reject(new Error(`Ошибка при запуске рассуждения: ${startResponse.error || 'Неизвестная ошибка'}`));
520
+ return;
521
+ }
522
+ // Если передан обработчик событий мышления, подписываемся
523
+ if (thinkingHandler) {
524
+ this.subscribeToThinking(newReasoningId, thinkingHandler);
525
+ }
526
+ resolve(newReasoningId);
527
+ }, this.namespace);
528
+ }, this.namespace);
529
+ });
530
+ });
531
+ }
532
+ else {
533
+ this.activeReasoningId = reasoningId;
534
+ // Отправляем запрос на присоединение к сессии рассуждения
535
+ return new Promise((resolve, reject) => {
536
+ client.sendSocketIOEvent('join_reasoning', { reasoningId }, (joinResponse) => {
537
+ if (joinResponse.success === false) {
538
+ reject(new Error(`Ошибка при присоединении к сессии рассуждения: ${joinResponse.error || 'Неизвестная ошибка'}`));
539
+ return;
540
+ }
541
+ // Отправляем запрос на запуск рассуждения
542
+ client.sendSocketIOEvent('start_reasoning', { reasoningId }, (startResponse) => {
543
+ if (startResponse.success === false) {
544
+ reject(new Error(`Ошибка при запуске рассуждения: ${startResponse.error || 'Неизвестная ошибка'}`));
545
+ return;
546
+ }
547
+ // Если передан обработчик событий мышления, подписываемся
548
+ if (thinkingHandler) {
549
+ this.subscribeToThinking(reasoningId, thinkingHandler);
550
+ }
551
+ resolve(reasoningId);
552
+ }, this.namespace);
553
+ }, this.namespace);
554
+ });
555
+ }
556
+ }
557
+ catch (error) {
558
+ throw new Error(`Ошибка при подключении к сессии thinking: ${error instanceof Error ? error.message : String(error)}`);
559
+ }
560
+ }
561
+ /**
562
+ * Регистрирует логирование всех событий для отладки
563
+ * @private
564
+ */
565
+ setupDebugLogging(namespace) {
566
+ const client = this.clients.get(namespace);
567
+ if (!client)
568
+ return;
569
+ // Регистрируем конкретные обработчики вместо wildcard '*'
570
+ client.on('message', (data) => {
571
+ this.logger('debug', `[DEBUG] Получено сообщение от ${namespace}`, data);
572
+ });
573
+ // Специальное логирование для ошибок
574
+ client.on('error', (error) => {
575
+ this.logger('error', `[ERROR] Ошибка от ${namespace}`, error);
576
+ });
577
+ // Логирование успешных и неуспешных ответов для типичных событий
578
+ client.on('join_reasoning_success', (data) => {
579
+ this.logger('debug', `[SUCCESS] Успешное присоединение к рассуждению от ${namespace}`, data);
580
+ });
581
+ client.on('join_reasoning_error', (error) => {
582
+ this.logger('error', `[ERROR] Ошибка присоединения к рассуждению от ${namespace}`, error);
583
+ });
584
+ client.on('start_reasoning_success', (data) => {
585
+ this.logger('debug', `[SUCCESS] Успешный запуск рассуждения от ${namespace}`, data);
586
+ });
587
+ client.on('start_reasoning_error', (error) => {
588
+ this.logger('error', `[ERROR] Ошибка запуска рассуждения от ${namespace}`, error);
589
+ });
590
+ }
591
+ /**
592
+ * Проверяет наличие callback-функции в данных и правильно вызывает ее
593
+ * @param eventName Имя события
594
+ * @param data Данные события
595
+ * @private
596
+ */
597
+ extractAndCallCallback(eventName, data) {
598
+ if (data && typeof data === 'object' && typeof data.callback === 'function') {
599
+ try {
600
+ // Копируем данные без callback
601
+ const dataCopy = { ...data };
602
+ delete dataCopy.callback;
603
+ // Получаем callback-функцию
604
+ const callback = data.callback;
605
+ // Вызываем callback
606
+ this.logger('debug', `Вызов callback для события ${eventName}`);
607
+ // Создаем таймаут для предотвращения зависания
608
+ const timeoutId = setTimeout(() => {
609
+ this.logger('warn', `Таймаут выполнения callback для события ${eventName}`);
610
+ }, 5000);
611
+ // Вызываем callback и очищаем таймаут
612
+ callback();
613
+ clearTimeout(timeoutId);
614
+ }
615
+ catch (error) {
616
+ this.logger('error', `Ошибка при вызове callback для события ${eventName}: ${error instanceof Error ? error.message : String(error)}`);
617
+ }
618
+ }
619
+ }
384
620
  }
385
621
  exports.CodeSolverWebSocketClient = CodeSolverWebSocketClient;
386
622
  //# sourceMappingURL=code-solver-websocket-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"code-solver-websocket-client.js","sourceRoot":"","sources":["../../../src/utils/code-solver-websocket-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"code-solver-websocket-client.js","sourceRoot":"","sources":["../../../src/utils/code-solver-websocket-client.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,8 @@ class WebSocketClient {
29
29
  this.connected = false;
30
30
  /** Аутентифицировано ли соединение */
31
31
  this.authenticated = false;
32
+ /** ID сокета */
33
+ this.socketId = null;
32
34
  this.url = url;
33
35
  this.options = {
34
36
  headers: options.headers || {},
@@ -568,13 +570,46 @@ class WebSocketClient {
568
570
  }
569
571
  }
570
572
  /**
571
- * Отправляет событие Socket.IO
572
- * @param {string} event Название события
573
+ * Отправляет событие Socket.IO через WebSocket соединение
574
+ * @param {string} event Имя события
573
575
  * @param {any} data Данные события
576
+ * @param {(response: any) => void} [callback] Функция обратного вызова для получения ответа
574
577
  * @param {string} [namespace=''] Namespace для Socket.IO
575
578
  * @returns {boolean} Успешно ли отправлено сообщение
576
579
  */
577
- sendSocketIOEvent(event, data, namespace = '') {
580
+ sendSocketIOEvent(event, data, callback, namespace = '') {
581
+ // Проверяем наличие callback-функции
582
+ const hasCallback = typeof callback === 'function';
583
+ this.logger('debug', `Отправка Socket.IO события ${event}`, {
584
+ hasData: !!data,
585
+ namespace,
586
+ hasCallback
587
+ });
588
+ // Если callback предоставлен, регистрируем временный обработчик для ответа
589
+ if (hasCallback) {
590
+ // Создаем уникальный идентификатор для обработчика
591
+ const callbackId = `${event}_response_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
592
+ // Регистрируем обработчик на время ожидания ответа
593
+ this.once(`${event}_error`, (errorData) => {
594
+ this.logger('error', `Получен ответ с ошибкой для события ${event}`, errorData);
595
+ callback({ success: false, error: errorData.message || 'Неизвестная ошибка' });
596
+ });
597
+ this.once(`${event}_success`, (responseData) => {
598
+ this.logger('debug', `Получен успешный ответ для события ${event}`, responseData);
599
+ callback({ success: true, ...responseData });
600
+ });
601
+ // Устанавливаем таймаут для автоматического удаления обработчиков
602
+ setTimeout(() => {
603
+ this.off(`${event}_error`);
604
+ this.off(`${event}_success`);
605
+ // Если callback еще не был вызван, вызываем его с ошибкой таймаута
606
+ callback({
607
+ success: false,
608
+ error: `Таймаут ожидания ответа на событие ${event}`,
609
+ timeout: true
610
+ });
611
+ }, 10000); // 10-секундный таймаут
612
+ }
578
613
  // Формируем объект для отправки через метод send
579
614
  const socketIOMessage = {
580
615
  type: '2',
@@ -619,7 +654,7 @@ class WebSocketClient {
619
654
  socketState: this.webSocket ? this.webSocket.readyState : 'нет соединения'
620
655
  });
621
656
  // Отправляем событие authenticate с API ключом
622
- this.sendSocketIOEvent('authenticate', { apiKey: this.options.apiKey }, this.namespace);
657
+ this.sendSocketIOEvent('authenticate', { apiKey: this.options.apiKey }, undefined, this.namespace);
623
658
  }
624
659
  /**
625
660
  * Обработка открытия соединения Socket.IO
@@ -649,6 +684,34 @@ class WebSocketClient {
649
684
  this.authenticated = true;
650
685
  }
651
686
  });
687
+ // Сохраняем ID сокета, если он пришел
688
+ if (data && data.sid) {
689
+ this.socketId = data.sid;
690
+ }
691
+ }
692
+ /**
693
+ * Получает ID текущего сокета
694
+ * @returns {string|null} ID сокета или null, если соединение не установлено
695
+ */
696
+ getSocketId() {
697
+ return this.socketId;
698
+ }
699
+ /**
700
+ * Регистрирует обработчик события, который будет вызван один раз и удален
701
+ * @param {string} event Название события
702
+ * @param {WebSocketEventHandler} handler Обработчик события
703
+ * @returns {void}
704
+ */
705
+ once(event, handler) {
706
+ // Создаем обертку, которая удалит обработчик после первого вызова
707
+ const wrapperHandler = (data) => {
708
+ // Удаляем обработчик
709
+ this.off(event, wrapperHandler);
710
+ // Вызываем оригинальный обработчик
711
+ handler(data);
712
+ };
713
+ // Регистрируем обертку
714
+ this.on(event, wrapperHandler);
652
715
  }
653
716
  }
654
717
  exports.WebSocketClient = WebSocketClient;