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.
- package/README.md +123 -29
- package/dist/{@SipConnector-UTHCoMXw.js → @SipConnector-DC8z6npa.js} +835 -473
- package/dist/@SipConnector-eNxG0NqG.cjs +1 -0
- package/dist/AutoConnectorManager/@AutoConnectorManager.d.ts +41 -0
- package/dist/AutoConnectorManager/AttemptsState.d.ts +21 -0
- package/dist/AutoConnectorManager/CheckTelephonyRequester.d.ts +19 -0
- package/dist/AutoConnectorManager/PingServerIfNotActiveCallRequester.d.ts +18 -0
- package/dist/AutoConnectorManager/PingServerRequester.d.ts +13 -0
- package/dist/AutoConnectorManager/RegistrationFailedOutOfCallSubscriber.d.ts +18 -0
- package/dist/AutoConnectorManager/eventNames.d.ts +18 -0
- package/dist/AutoConnectorManager/index.d.ts +3 -0
- package/dist/AutoConnectorManager/types.d.ts +22 -0
- package/dist/AutoConnectorManager/utils/errors.d.ts +2 -0
- package/dist/AutoConnectorManager/utils/index.d.ts +1 -0
- package/dist/CallManager/@CallManager.d.ts +3 -0
- package/dist/CallManager/eventNames.d.ts +6 -2
- package/dist/ConnectionManager/@ConnectionManager.d.ts +11 -1
- package/dist/ConnectionManager/eventNames.d.ts +6 -2
- package/dist/ConnectionManager/index.d.ts +1 -0
- package/dist/ConnectionManager/utils/errors.d.ts +2 -0
- package/dist/ConnectionManager/utils/index.d.ts +2 -0
- package/dist/ConnectionManager/utils/resolveParameters.d.ts +2 -0
- package/dist/ConnectionQueueManager/@ConnectionQueueManager.d.ts +1 -7
- package/dist/ConnectionQueueManager/index.d.ts +1 -0
- package/dist/SipConnector/@SipConnector.d.ts +8 -4
- package/dist/SipConnector/eventNames.d.ts +1 -1
- package/dist/SipConnectorFacade/@SipConnectorFacade.d.ts +16 -10
- package/dist/doMock.cjs +1 -1
- package/dist/doMock.js +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.js +227 -213
- package/package.json +10 -10
- 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.
|
|
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
|
-
| `
|
|
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
|
-
│
|
|
889
|
-
|
|
890
|
-
│
|
|
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
|
-
│
|
|
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
|
### Паттерны проектирования
|