sip-connector 18.0.0 → 19.0.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.
Files changed (34) hide show
  1. package/README.md +123 -29
  2. package/dist/{@SipConnector-UTHCoMXw.js → @SipConnector-DC8z6npa.js} +835 -473
  3. package/dist/@SipConnector-eNxG0NqG.cjs +1 -0
  4. package/dist/AutoConnectorManager/@AutoConnectorManager.d.ts +41 -0
  5. package/dist/AutoConnectorManager/AttemptsState.d.ts +21 -0
  6. package/dist/AutoConnectorManager/CheckTelephonyRequester.d.ts +19 -0
  7. package/dist/AutoConnectorManager/PingServerIfNotActiveCallRequester.d.ts +18 -0
  8. package/dist/AutoConnectorManager/PingServerRequester.d.ts +13 -0
  9. package/dist/AutoConnectorManager/RegistrationFailedOutOfCallSubscriber.d.ts +18 -0
  10. package/dist/AutoConnectorManager/eventNames.d.ts +18 -0
  11. package/dist/AutoConnectorManager/index.d.ts +3 -0
  12. package/dist/AutoConnectorManager/types.d.ts +22 -0
  13. package/dist/AutoConnectorManager/utils/errors.d.ts +2 -0
  14. package/dist/AutoConnectorManager/utils/index.d.ts +1 -0
  15. package/dist/CallManager/@CallManager.d.ts +3 -0
  16. package/dist/CallManager/eventNames.d.ts +6 -2
  17. package/dist/ConnectionManager/@ConnectionManager.d.ts +11 -1
  18. package/dist/ConnectionManager/eventNames.d.ts +6 -2
  19. package/dist/ConnectionManager/index.d.ts +1 -0
  20. package/dist/ConnectionManager/utils/errors.d.ts +2 -0
  21. package/dist/ConnectionManager/utils/index.d.ts +2 -0
  22. package/dist/ConnectionManager/utils/resolveParameters.d.ts +2 -0
  23. package/dist/ConnectionQueueManager/@ConnectionQueueManager.d.ts +1 -7
  24. package/dist/ConnectionQueueManager/index.d.ts +1 -0
  25. package/dist/SipConnector/@SipConnector.d.ts +8 -4
  26. package/dist/SipConnector/eventNames.d.ts +1 -1
  27. package/dist/SipConnectorFacade/@SipConnectorFacade.d.ts +16 -10
  28. package/dist/doMock.cjs +1 -1
  29. package/dist/doMock.js +1 -1
  30. package/dist/index.cjs +1 -1
  31. package/dist/index.d.ts +2 -0
  32. package/dist/index.js +227 -213
  33. package/package.json +10 -10
  34. package/dist/@SipConnector-CFYT0HQB.cjs +0 -1
package/README.md CHANGED
@@ -23,6 +23,7 @@ SDK предоставляет комплексное решение для:
23
23
  | **Мониторинг** | WebRTC-статистика (RTCRtpStats, ICE candidate stats) |
24
24
  | **Управление конференциями** | Перемещение участников между ролями (участник/зритель) |
25
25
  | **Лицензирование** | Мониторинг использования лицензий и состояния презентаций |
26
+ | **Автоподключение** | Автоматическое переподключение при обрывах связи |
26
27
 
27
28
  - **Адаптивный polling**: Улучшенная система опроса для мониторинга изменений видеотреков
28
29
  - **Поддержка maxBitrate в PresentationManager**: Автоматическое управление битрейтом для презентаций
@@ -38,9 +39,9 @@ SDK предоставляет комплексное решение для:
38
39
 
39
40
  SDK построен по принципу **слоистой архитектуры**:
40
41
 
41
- - **SipConnector** — низкоуровневый слой с менеджерами (Connection, Call, Presentation, API)
42
+ - **SipConnector** — низкоуровневый слой с менеджерами (Connection, Call, Presentation, API, AutoConnector)
42
43
  - **SipConnectorFacade** — высокоуровневый фасад с готовыми сценариями
43
- - **Специализированные менеджеры** — для статистики, участников, медиа-потоков
44
+ - **Специализированные менеджеры** — для статистики, участников, медиа-потоков, автоподключения
44
45
 
45
46
  ---
46
47
 
@@ -93,6 +94,7 @@ const facade = new SipConnectorFacade(sipConnector);
93
94
  ### Шаг 2: Подключение к серверу
94
95
 
95
96
  ```typescript
97
+ // Подключение с объектом параметров
96
98
  await facade.connectToServer({
97
99
  userAgent: tools.getUserAgent({ appName: 'MyApp' }),
98
100
  sipWebSocketServerURL: 'wss://sip.example.com/ws',
@@ -101,6 +103,20 @@ await facade.connectToServer({
101
103
  password: 'secret',
102
104
  isRegisteredUser: true, // Включить SIP REGISTER
103
105
  });
106
+
107
+ // Или с функцией для динамического получения параметров
108
+ await facade.connectToServer(async () => {
109
+ // Получение актуальных параметров подключения
110
+ const config = await fetchConnectionConfig();
111
+ return {
112
+ userAgent: tools.getUserAgent({ appName: 'MyApp' }),
113
+ sipWebSocketServerURL: config.websocketUrl,
114
+ sipServerUrl: config.sipUrl,
115
+ name: config.username,
116
+ password: config.password,
117
+ isRegisteredUser: true,
118
+ };
119
+ });
104
120
  ```
105
121
 
106
122
  ### Шаг 3: Исходящий звонок
@@ -785,8 +801,7 @@ const connectionQueueManager = new ConnectionQueueManager({
785
801
 
786
802
  // Операции выполняются последовательно
787
803
  await connectionQueueManager.connect(params);
788
- await connectionQueueManager.register();
789
- await connectionQueueManager.checkTelephony(params);
804
+ await connectionQueueManager.disconnect();
790
805
  ```
791
806
 
792
807
  ### Механизм работы
@@ -796,17 +811,11 @@ await connectionQueueManager.checkTelephony(params);
796
811
 
797
812
  ### Поддерживаемые операции
798
813
 
799
- | Операция | Описание |
800
- | ---------------- | ----------------------- |
801
- | `connect` | Подключение к серверу |
802
- | `disconnect` | Отключение от сервера |
803
- | `register` | Регистрация на сервере |
804
- | `unregister` | Отмена регистрации |
805
- | `tryRegister` | Попытка регистрации |
806
- | `checkTelephony` | Проверка телефонии |
807
- | `sendOptions` | Отправка OPTIONS |
808
- | `ping` | Отправка PING |
809
- | `set` | Обновление конфигурации |
814
+ | Операция | Описание |
815
+ | ------------ | --------------------------------- |
816
+ | `connect` | Подключение к серверу |
817
+ | `disconnect` | Отключение от сервера |
818
+ | `stop` | Остановка всех операций в очереди |
810
819
 
811
820
  ### Интеграция в SipConnector
812
821
 
@@ -821,6 +830,91 @@ await sipConnector.disconnect(); // → connectionQueueManager.disconnect()
821
830
 
822
831
  ---
823
832
 
833
+ ## 🔄 Автоматическое переподключение
834
+
835
+ ### AutoConnectorManager
836
+
837
+ `AutoConnectorManager` обеспечивает **автоматическое переподключение** при обрывах связи и проблемах с сетью:
838
+
839
+ ```typescript
840
+ // Создание SipConnector с настройками автоподключения
841
+ const sipConnector = new SipConnector(
842
+ { JsSIP },
843
+ {
844
+ autoConnectorOptions: {
845
+ onBeforeRetry, // Очистка кэша перед переподключением
846
+ timeoutBetweenAttempts: 3000, // Задержка между попытками
847
+ checkTelephonyRequestInterval: 15000, // Интервал проверки телефонии
848
+ },
849
+ },
850
+ );
851
+
852
+ // Запуск автоподключения
853
+ sipConnector.startAutoConnect({
854
+ // Возвращает параметры подключения
855
+ getParameters: async () => {
856
+ return {
857
+ displayName: 'displayName',
858
+ sipWebSocketServerURL: 'wss://example.com/ws',
859
+ sipServerUrl: 'sipServerUrl',
860
+ };
861
+ },
862
+ // Проверяет готовность к подключению
863
+ hasReadyForConnection: () => {
864
+ return true;
865
+ },
866
+ });
867
+
868
+ // Остановка автоподключения
869
+ sipConnector.stopAutoConnect();
870
+
871
+ // Подписка на события автоподключения
872
+ sipConnector.on('auto-connect:changed-attempt-status', ({ isInProgress }) => {
873
+ console.log('Попытка подключения в процессе:', isInProgress);
874
+ });
875
+
876
+ sipConnector.on('auto-connect:before-attempt', () => {
877
+ console.log('Начало попытки подключения');
878
+ });
879
+
880
+ sipConnector.on('auto-connect:succeeded-attempt', () => {
881
+ console.log('Попытка подключения успешна');
882
+ });
883
+
884
+ sipConnector.on('auto-connect:failed-attempt', (error) => {
885
+ console.log('Попытка подключения неудачна:', error);
886
+ });
887
+
888
+ sipConnector.on('auto-connect:cancelled-attempt', (error) => {
889
+ console.log('Попытка подключения отменена:', error);
890
+ });
891
+ ```
892
+
893
+ ### Принцип работы
894
+
895
+ - **Автоматические попытки**: Повторяет попытки подключения при ошибках
896
+ - **Проверка телефонии**: Периодически проверяет доступность сервера
897
+ - **Мониторинг состояния**: Отслеживает состояние регистрации и звонков
898
+ - **Адаптивные задержки**: Использует настраиваемые интервалы между попытками
899
+ - **Очистка кэша**: Возможность настраивать очистку кэша через хук
900
+
901
+ ### События автоподключения
902
+
903
+ | Событие | Описание | Данные |
904
+ | ------------------------------------- | ------------------------------ | ----------------------------------- |
905
+ | `auto-connect:connecting` | Начало подключения | - |
906
+ | `auto-connect:connected` | Успешное подключение | `{ ua: UA, isRegistered: boolean }` |
907
+ | `auto-connect:disconnecting` | Начало отключения | - |
908
+ | `auto-connect:disconnected` | Отключение завершено | - |
909
+ | `auto-connect:failed` | Ошибка подключения | `Error` |
910
+ | `auto-connect:before-attempt` | Начало попытки подключения | - |
911
+ | `auto-connect:succeeded-attempt` | Успешная попытка подключения | - |
912
+ | `auto-connect:failed-attempt` | Неудачная попытка подключения | `Error` |
913
+ | `auto-connect:cancelled-attempt` | Отмененная попытка подключения | `Error` |
914
+ | `auto-connect:changed-attempt-status` | Изменение статуса попытки | `{ isInProgress: boolean }` |
915
+
916
+ ---
917
+
824
918
  ## 🔧 API и экспорты
825
919
 
826
920
  ### Основные классы
@@ -884,20 +978,20 @@ import {
884
978
  ### Слоистая архитектура
885
979
 
886
980
  ```shell
887
- ┌────────────────────────────────────────────────────┐
888
- SipConnectorFacade │ ← Высокоуровневый API
889
- ├────────────────────────────────────────────────────┤
890
- SipConnector │ ← Координация менеджеров
891
- ├────────────────────────────────────────────────────┤
892
- │ Connection │ Connection │ Call │ API │ ← Основные менеджеры
893
- │ Manager │ Queue │ Manager │ Manager │
894
- │ │ Manager │ │ │
895
- ├────────────────────────────────────────────────────┤
896
- │ Stats │Presentation│IncomingCall│VideoBalancer│ ← Специализированные менеджеры
897
- │ Manager │ Manager │ Manager │ Manager │
898
- ├────────────────────────────────────────────────────┤
899
- @krivega/jssip │ ← SIP-функциональность
900
- └────────────────────────────────────────────────────┘
981
+ ┌──────────────────────────────────────────────────────────────────┐
982
+ SipConnectorFacade │ ← Высокоуровневый API
983
+ ├──────────────────────────────────────────────────────────────────┤
984
+ SipConnector │ ← Координация менеджеров
985
+ ├──────────────────────────────────────────────────────────────────┤
986
+ │ Connection │ Connection │ Call │ API │ ← Основные менеджеры
987
+ │ Manager │ Queue │ Manager │ Manager │
988
+ │ │ Manager │ │ │
989
+ ├──────────────────────────────────────────────────────────────────┤
990
+ │ Stats │Presentation│IncomingCall│VideoBalancer│AutoConnector│ ← Специализированные менеджеры
991
+ │ Manager │ Manager │ Manager │ Manager │Manager │
992
+ ├──────────────────────────────────────────────────────────────────┤
993
+ @krivega/jssip │ ← SIP-функциональность
994
+ └──────────────────────────────────────────────────────────────────┘
901
995
  ```
902
996
 
903
997
  ### Паттерны проектирования