sip-connector 15.1.0 → 15.2.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/README.md +160 -11
- package/dist/{@SipConnector-G96OmJEP.js → @SipConnector-BEZk1hmx.js} +548 -267
- package/dist/@SipConnector-hpySQIBa.cjs +1 -0
- package/dist/SipConnector/@SipConnector.d.ts +2 -0
- package/dist/SipConnector/eventNames.d.ts +1 -1
- package/dist/SipConnectorFacade/SipConnectorFacade.d.ts +3 -0
- package/dist/StatsManager/@StatsManager.d.ts +19 -0
- package/dist/StatsManager/eventNames.d.ts +2 -0
- package/dist/StatsManager/index.d.ts +2 -0
- package/dist/StatsPeerConnection/StatsPeerConnection.d.ts +20 -0
- package/dist/StatsPeerConnection/__fixtures__/callStaticsState.d.ts +3923 -0
- package/dist/StatsPeerConnection/constants.d.ts +14 -0
- package/dist/StatsPeerConnection/eventNames.d.ts +10 -0
- package/dist/StatsPeerConnection/index.d.ts +4 -0
- package/dist/StatsPeerConnection/parseStatsReports.d.ts +14 -0
- package/dist/StatsPeerConnection/requestAllStatistics.d.ts +11 -0
- package/dist/StatsPeerConnection/typings.d.ts +194 -0
- package/dist/StatsPeerConnection/utils/hasAvailableStats.d.ts +2 -0
- package/dist/StatsPeerConnection/utils/index.d.ts +3 -0
- package/dist/StatsPeerConnection/utils/now.d.ts +2 -0
- package/dist/StatsPeerConnection/utils/statsReportToObject.d.ts +4 -0
- package/dist/{videoSendingBalancer → VideoSendingBalancer}/ParametersSetterWithQueue.d.ts +2 -2
- package/dist/{videoSendingBalancer → VideoSendingBalancer}/SenderBalancer.d.ts +2 -2
- package/dist/{videoSendingBalancer → VideoSendingBalancer}/VideoSendingBalancer.d.ts +2 -2
- package/dist/{videoSendingBalancer → VideoSendingBalancer}/types.d.ts +2 -2
- package/dist/doMock.cjs +1 -1
- package/dist/doMock.js +4 -4
- package/dist/index.cjs +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +270 -255
- package/dist/tools/createUaParser/createUaParser.d.ts +4 -0
- package/dist/tools/createUaParser/index.d.ts +1 -0
- package/dist/tools/createUaParser/isElectronEnvironment.d.ts +2 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/{setParametersToSender → tools/setParametersToSender}/configureDegradationPreference.d.ts +1 -1
- package/dist/{setParametersToSender → tools/setParametersToSender}/configureEncodings.d.ts +1 -1
- package/dist/{setParametersToSender → tools/setParametersToSender}/index.d.ts +1 -1
- package/dist/{setParametersToSender → tools/setParametersToSender}/setEncodingsToSender.d.ts +2 -2
- package/dist/{setParametersToSender → tools/setParametersToSender}/setMaxBitrateToSender.d.ts +1 -1
- package/dist/tools/setParametersToSender/setParametersToSender.d.ts +4 -0
- package/dist/{setParametersToSender → tools/setParametersToSender}/types.d.ts +1 -1
- package/package.json +7 -13
- package/dist/@SipConnector-BBhQzo-W.cjs +0 -1
- package/dist/setParametersToSender/setParametersToSender.d.ts +0 -4
- /package/dist/{videoSendingBalancer → VideoSendingBalancer}/CodecProvider.d.ts +0 -0
- /package/dist/{videoSendingBalancer → VideoSendingBalancer}/SenderFinder.d.ts +0 -0
- /package/dist/{videoSendingBalancer → VideoSendingBalancer}/TaskQueue.d.ts +0 -0
- /package/dist/{videoSendingBalancer → VideoSendingBalancer}/VideoSendingEventHandler.d.ts +0 -0
- /package/dist/{videoSendingBalancer → VideoSendingBalancer}/calcBitrate/calcMaxBitrateByWidth.d.ts +0 -0
- /package/dist/{videoSendingBalancer → VideoSendingBalancer}/calcBitrate/calcMaxBitrateByWidthAndCodec.d.ts +0 -0
- /package/dist/{videoSendingBalancer → VideoSendingBalancer}/calcBitrate/hasAv1Codec.d.ts +0 -0
- /package/dist/{videoSendingBalancer → VideoSendingBalancer}/calcBitrate/index.d.ts +0 -0
- /package/dist/{videoSendingBalancer → VideoSendingBalancer}/calcBitrate/scaleBitrateByCodec.d.ts +0 -0
- /package/dist/{videoSendingBalancer → VideoSendingBalancer}/calcResolution/calcScaleResolutionDownBy.d.ts +0 -0
- /package/dist/{videoSendingBalancer → VideoSendingBalancer}/calcResolution/index.d.ts +0 -0
- /package/dist/{videoSendingBalancer → VideoSendingBalancer}/index.d.ts +0 -0
- /package/dist/{setParametersToSender → tools/setParametersToSender}/configureEmptyEncodings.d.ts +0 -0
- /package/dist/{setParametersToSender → tools/setParametersToSender}/configureMaxBitrate.d.ts +0 -0
- /package/dist/{setParametersToSender → tools/setParametersToSender}/configureScaleResolutionDownBy.d.ts +0 -0
- /package/dist/{setParametersToSender → tools/setParametersToSender}/hasChangedRTCRtpSendParameters.d.ts +0 -0
- /package/dist/{setParametersToSender → tools/setParametersToSender}/resolveHasNeedToUpdateItemEncoding.d.ts +0 -0
package/README.md
CHANGED
|
@@ -3,40 +3,189 @@
|
|
|
3
3
|
[](https://www.npmjs.com/package/sip-connector)
|
|
4
4
|

|
|
5
5
|
|
|
6
|
-
|
|
6
|
+
TypeScript SDK для подключения к Vinteo по WebRTC через SIP (на базе `@krivega/jssip`). Предоставляет высокий уровень API для:
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
- подключения/регистрации на SIP-сервере;
|
|
9
|
+
- исходящих/входящих звонков;
|
|
10
|
+
- управления презентацией (share screen/video);
|
|
11
|
+
- отправки служебных сообщений (DTMF, каналы, синхронизация медиа-состояния);
|
|
12
|
+
- подписки на события платформы.
|
|
9
13
|
|
|
10
|
-
|
|
14
|
+
## Установка
|
|
11
15
|
|
|
12
16
|
```sh
|
|
13
17
|
npm install sip-connector
|
|
18
|
+
# или
|
|
19
|
+
yarn add sip-connector
|
|
14
20
|
```
|
|
15
21
|
|
|
16
|
-
|
|
22
|
+
Минимально требуется передать `JsSIP` из `@krivega/jssip` при создании `SipConnector`.
|
|
23
|
+
|
|
24
|
+
## Быстрый старт
|
|
25
|
+
|
|
26
|
+
```ts
|
|
27
|
+
import { UA, WebSocketInterface } from '@krivega/jssip';
|
|
28
|
+
import { SipConnector, SipConnectorFacade, tools } from 'sip-connector';
|
|
29
|
+
|
|
30
|
+
// 1) Инициализация низкоуровневого коннектора
|
|
31
|
+
const sipConnector = new SipConnector({ JsSIP: { UA, WebSocketInterface } });
|
|
32
|
+
|
|
33
|
+
// 2) Фасад с готовыми сценариями и проксированием событий/методов
|
|
34
|
+
const facade = new SipConnectorFacade(sipConnector, {
|
|
35
|
+
// опционально: приоритезировать/исключить кодеки видео
|
|
36
|
+
preferredMimeTypesVideoCodecs: ['video/AV1', 'video/VP9'],
|
|
37
|
+
excludeMimeTypesVideoCodecs: ['video/H264'],
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
// 3) Подключение к серверу
|
|
41
|
+
await facade.connectToServer({
|
|
42
|
+
userAgent: tools.getUserAgent({ appName: 'MyApp' }),
|
|
43
|
+
sipWebSocketServerURL: 'wss://sip.example.com/ws',
|
|
44
|
+
sipServerUrl: 'sip:example.com',
|
|
45
|
+
name: '1001', // пользователь (SIP URI user)
|
|
46
|
+
password: 'secret',
|
|
47
|
+
isRegisteredUser: true, // включить SIP REGISTER
|
|
48
|
+
});
|
|
49
|
+
|
|
50
|
+
// 4) Исходящий звонок
|
|
51
|
+
const localStream = await navigator.mediaDevices.getUserMedia({ audio: true, video: true });
|
|
52
|
+
const pc = await facade.callToServer({
|
|
53
|
+
conference: '12345',
|
|
54
|
+
mediaStream: localStream,
|
|
55
|
+
setRemoteStreams: (streams) => {
|
|
56
|
+
// отобразите удалённые потоки в плеере
|
|
57
|
+
console.log('remote streams', streams);
|
|
58
|
+
},
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
// 5) Завершение
|
|
62
|
+
await facade.disconnectFromServer();
|
|
63
|
+
```
|
|
17
64
|
|
|
18
|
-
|
|
19
|
-
|
|
65
|
+
## Входящий звонок (пример)
|
|
66
|
+
|
|
67
|
+
```ts
|
|
68
|
+
// Подписка на входящие события
|
|
69
|
+
sipConnector.on('incoming-call:incoming', () => {
|
|
70
|
+
// ответить с локальным стримом
|
|
71
|
+
facade.answerToIncomingCall({
|
|
72
|
+
mediaStream: localStream,
|
|
73
|
+
setRemoteStreams: (streams) => {
|
|
74
|
+
/* ... */
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
});
|
|
20
78
|
```
|
|
21
79
|
|
|
22
|
-
##
|
|
80
|
+
## Управление презентацией
|
|
81
|
+
|
|
82
|
+
```ts
|
|
83
|
+
// старт
|
|
84
|
+
const displayStream = await navigator.mediaDevices.getDisplayMedia({ video: true, audio: true });
|
|
85
|
+
await facade.startPresentation({
|
|
86
|
+
mediaStream: displayStream,
|
|
87
|
+
isP2P: false,
|
|
88
|
+
contentHint: 'detail',
|
|
89
|
+
simulcastEncodings: [
|
|
90
|
+
{ width: 1920, height: 1080, scalabilityMode: 'L3T3_KEY' },
|
|
91
|
+
{ width: 1280, height: 720 },
|
|
92
|
+
],
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
// обновление (например, смена потока)
|
|
96
|
+
await facade.updatePresentation({ mediaStream: displayStream, isP2P: false });
|
|
97
|
+
|
|
98
|
+
// стоп
|
|
99
|
+
await facade.stopShareSipConnector();
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## События
|
|
103
|
+
|
|
104
|
+
События агрегируются и отдаются с префиксами менеджеров. Полный перечень смотрите в:
|
|
105
|
+
|
|
106
|
+
- `src/SipConnector/eventNames.ts`
|
|
107
|
+
- `src/ApiManager/eventNames.ts`
|
|
108
|
+
|
|
109
|
+
Примеры часто используемых событий:
|
|
110
|
+
|
|
111
|
+
- `connection:connected`, `connection:disconnected` — состояние подключения;
|
|
112
|
+
- `call:accepted`, `call:ended`, `call:failed` — жизненный цикл звонка;
|
|
113
|
+
- `api:enterRoom`, `api:useLicense`, `api:mustStopPresentation`, `api:newDTMF` — события от сервера;
|
|
114
|
+
- `incoming-call:incoming`, `incoming-call:failed` — входящие вызовы;
|
|
115
|
+
- `presentation:started`, `presentation:stopped` — презентация.
|
|
116
|
+
|
|
117
|
+
Подписка:
|
|
118
|
+
|
|
119
|
+
```ts
|
|
120
|
+
const unsubscribe = sipConnector.on('api:enterRoom', ({ room }) => {
|
|
121
|
+
console.log('entered room', room);
|
|
122
|
+
});
|
|
123
|
+
|
|
124
|
+
// разовая подписка на несколько событий
|
|
125
|
+
sipConnector.onceRace(['call:ended', 'call:failed'], (_payload, eventName) => {
|
|
126
|
+
console.log('call finished by', eventName);
|
|
127
|
+
});
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Экспорты
|
|
131
|
+
|
|
132
|
+
```ts
|
|
133
|
+
import {
|
|
134
|
+
SipConnector,
|
|
135
|
+
SipConnectorFacade,
|
|
136
|
+
debug,
|
|
137
|
+
enableDebug,
|
|
138
|
+
disableDebug,
|
|
139
|
+
ECallCause,
|
|
140
|
+
hasCanceledCallError,
|
|
141
|
+
EUseLicense,
|
|
142
|
+
EMimeTypesVideoCodecs,
|
|
143
|
+
type TContentHint,
|
|
144
|
+
type TCustomError,
|
|
145
|
+
type TJsSIP,
|
|
146
|
+
tools, // { getUserAgent, getExtraHeaders, hasPurgatory, ... }
|
|
147
|
+
} from 'sip-connector';
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
## Заметки по API
|
|
151
|
+
|
|
152
|
+
- `SipConnector` — низкоуровневый класс, инкапсулирующий менеджеры подключения/звонков/презентаций. Требует `JsSIP` при создании.
|
|
153
|
+
- `SipConnectorFacade` — удобный фасад с готовыми сценариями: `connectToServer`, `callToServer`, `answerToIncomingCall`, `disconnectFromServer`, `replaceMediaStream`, `sendMediaState`, `sendRefusalToTurnOnMic/Cam`, `onUseLicense`, `onMustStopPresentation`, `onMoveToSpectators/Participants` и др. Также проксирует методы `on/once/onceRace/wait/off`, `ping`, `hangUp`, `sendDTMF`, `checkTelephony`, `connection`, `isConfigured`, `isRegistered`.
|
|
154
|
+
- Поддерживаются настройки качества: `contentHint`, `degradationPreference`, `simulcastEncodings`, `sendEncodings`, фильтрация кодеков видео через `preferredMimeTypesVideoCodecs`/`excludeMimeTypesVideoCodecs`.
|
|
155
|
+
|
|
156
|
+
## Отладка
|
|
157
|
+
|
|
158
|
+
```ts
|
|
159
|
+
import { enableDebug, disableDebug } from 'sip-connector';
|
|
160
|
+
|
|
161
|
+
enableDebug();
|
|
162
|
+
// ...
|
|
163
|
+
disableDebug();
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Тесты
|
|
23
167
|
|
|
24
168
|
```sh
|
|
25
169
|
npm test
|
|
26
170
|
```
|
|
27
171
|
|
|
172
|
+
## Поддержка браузеров
|
|
173
|
+
|
|
174
|
+
SDK использует стандартные WebRTC API. Для максимально старых браузеров проверьте поддержку необходимых возможностей (кодеки, Unified Plan, `getDisplayMedia`).
|
|
175
|
+
|
|
28
176
|
## Maintainer
|
|
29
177
|
|
|
30
|
-
|
|
178
|
+
Krivega Dmitriy
|
|
31
179
|
|
|
32
|
-
- Website: https://krivega.com
|
|
180
|
+
- Website: [krivega.com](https://krivega.com)
|
|
33
181
|
- Github: [@Krivega](https://github.com/Krivega)
|
|
34
182
|
|
|
35
183
|
## Contributing
|
|
36
184
|
|
|
37
|
-
Contributions, issues and feature requests are welcome
|
|
185
|
+
Contributions, issues and feature requests are welcome!
|
|
186
|
+
Feel free to check [issues page](https://github.com/Krivega/sip-connector/issues). You can also take a look at the [contributing guide](https://github.com/Krivega/sip-connector/blob/master/CONTRIBUTING.md).
|
|
38
187
|
|
|
39
188
|
## 📝 License
|
|
40
189
|
|
|
41
|
-
Copyright © 2021 [Krivega Dmitriy](https://github.com/Krivega)
|
|
190
|
+
Copyright © 2021‑2025 [Krivega Dmitriy](https://github.com/Krivega).
|
|
42
191
|
This project is [MIT](https://github.com/Krivega/sip-connector/blob/master/LICENSE) licensed.
|