mediasoup-client 3.6.50 → 3.6.53
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/lib/Consumer.d.ts +22 -24
- package/lib/Consumer.d.ts.map +1 -1
- package/lib/Consumer.js +5 -18
- package/lib/DataConsumer.d.ts +17 -19
- package/lib/DataConsumer.d.ts.map +1 -1
- package/lib/DataConsumer.js +2 -14
- package/lib/DataProducer.d.ts +17 -19
- package/lib/DataProducer.d.ts.map +1 -1
- package/lib/DataProducer.js +2 -14
- package/lib/Device.d.ts +4 -6
- package/lib/Device.d.ts.map +1 -1
- package/lib/Device.js +8 -9
- package/lib/EnhancedEventEmitter.d.ts +19 -3
- package/lib/EnhancedEventEmitter.d.ts.map +1 -1
- package/lib/EnhancedEventEmitter.js +50 -14
- package/lib/Producer.d.ts +35 -28
- package/lib/Producer.d.ts.map +1 -1
- package/lib/Producer.js +20 -29
- package/lib/Transport.d.ts +49 -21
- package/lib/Transport.d.ts.map +1 -1
- package/lib/Transport.js +97 -31
- package/lib/handlers/Chrome55.d.ts +2 -2
- package/lib/handlers/Chrome55.d.ts.map +1 -1
- package/lib/handlers/Chrome55.js +10 -4
- package/lib/handlers/Chrome67.d.ts +2 -2
- package/lib/handlers/Chrome67.d.ts.map +1 -1
- package/lib/handlers/Chrome67.js +10 -4
- package/lib/handlers/Chrome70.d.ts +2 -2
- package/lib/handlers/Chrome70.d.ts.map +1 -1
- package/lib/handlers/Chrome70.js +10 -4
- package/lib/handlers/Chrome74.d.ts +2 -2
- package/lib/handlers/Chrome74.d.ts.map +1 -1
- package/lib/handlers/Chrome74.js +24 -14
- package/lib/handlers/Edge11.d.ts +2 -2
- package/lib/handlers/Edge11.d.ts.map +1 -1
- package/lib/handlers/Edge11.js +10 -4
- package/lib/handlers/FakeHandler.d.ts +4 -4
- package/lib/handlers/FakeHandler.d.ts.map +1 -1
- package/lib/handlers/FakeHandler.js +7 -3
- package/lib/handlers/Firefox60.d.ts +2 -2
- package/lib/handlers/Firefox60.d.ts.map +1 -1
- package/lib/handlers/Firefox60.js +24 -14
- package/lib/handlers/HandlerInterface.d.ts +14 -12
- package/lib/handlers/HandlerInterface.d.ts.map +1 -1
- package/lib/handlers/HandlerInterface.js +0 -8
- package/lib/handlers/ReactNative.d.ts +2 -2
- package/lib/handlers/ReactNative.d.ts.map +1 -1
- package/lib/handlers/ReactNative.js +10 -4
- package/lib/handlers/Safari11.d.ts +2 -2
- package/lib/handlers/Safari11.d.ts.map +1 -1
- package/lib/handlers/Safari11.js +10 -4
- package/lib/handlers/Safari12.d.ts +2 -2
- package/lib/handlers/Safari12.d.ts.map +1 -1
- package/lib/handlers/Safari12.js +24 -14
- package/lib/handlers/ortc/edgeUtils.js +5 -1
- package/lib/handlers/sdp/MediaSection.js +5 -1
- package/lib/handlers/sdp/RemoteSdp.js +5 -1
- package/lib/handlers/sdp/commonUtils.js +5 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +6 -2
- package/lib/ortc.js +5 -1
- package/lib/types.js +5 -1
- package/lib/utils.d.ts.map +1 -1
- package/package.json +11 -11
- package/src/Consumer.ts +40 -29
- package/src/DataConsumer.ts +26 -22
- package/src/DataProducer.ts +26 -22
- package/src/Device.ts +9 -9
- package/src/EnhancedEventEmitter.ts +105 -22
- package/src/Producer.ts +99 -38
- package/src/Transport.ts +193 -52
- package/src/handlers/Chrome55.ts +12 -4
- package/src/handlers/Chrome67.ts +11 -3
- package/src/handlers/Chrome70.ts +11 -3
- package/src/handlers/Chrome74.ts +29 -15
- package/src/handlers/Edge11.ts +11 -3
- package/src/handlers/FakeHandler.ts +6 -5
- package/src/handlers/Firefox60.ts +29 -15
- package/src/handlers/HandlerInterface.ts +16 -12
- package/src/handlers/ReactNative.ts +11 -3
- package/src/handlers/Safari11.ts +11 -3
- package/src/handlers/Safari12.ts +29 -15
- package/src/utils.ts +0 -1
- package/.vimrc +0 -21
- package/NO_GIT/Notes.txt +0 -18
package/lib/Producer.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { EnhancedEventEmitter } from './EnhancedEventEmitter';
|
|
2
|
-
import { RtpCodecCapability, RtpParameters, RtpEncodingParameters } from './RtpParameters';
|
|
2
|
+
import { MediaKind, RtpCodecCapability, RtpParameters, RtpEncodingParameters } from './RtpParameters';
|
|
3
3
|
export declare type ProducerOptions = {
|
|
4
4
|
track?: MediaStreamTrack;
|
|
5
5
|
encodings?: RtpEncodingParameters[];
|
|
@@ -8,7 +8,7 @@ export declare type ProducerOptions = {
|
|
|
8
8
|
stopTracks?: boolean;
|
|
9
9
|
disableTrackOnPause?: boolean;
|
|
10
10
|
zeroRtpOnPause?: boolean;
|
|
11
|
-
appData?:
|
|
11
|
+
appData?: Record<string, unknown>;
|
|
12
12
|
};
|
|
13
13
|
export declare type ProducerCodecOptions = {
|
|
14
14
|
opusStereo?: boolean;
|
|
@@ -21,7 +21,34 @@ export declare type ProducerCodecOptions = {
|
|
|
21
21
|
videoGoogleMaxBitrate?: number;
|
|
22
22
|
videoGoogleMinBitrate?: number;
|
|
23
23
|
};
|
|
24
|
-
export declare
|
|
24
|
+
export declare type ProducerEvents = {
|
|
25
|
+
transportclose: [];
|
|
26
|
+
trackended: [];
|
|
27
|
+
'@replacetrack': [
|
|
28
|
+
MediaStreamTrack | null,
|
|
29
|
+
() => void,
|
|
30
|
+
(error: Error) => void
|
|
31
|
+
];
|
|
32
|
+
'@setmaxspatiallayer': [
|
|
33
|
+
number,
|
|
34
|
+
() => void,
|
|
35
|
+
(error: Error) => void
|
|
36
|
+
];
|
|
37
|
+
'@setrtpencodingparameters': [
|
|
38
|
+
RTCRtpEncodingParameters,
|
|
39
|
+
() => void,
|
|
40
|
+
(error: Error) => void
|
|
41
|
+
];
|
|
42
|
+
'@getstats': [(stats: RTCStatsReport) => void, (error: Error) => void];
|
|
43
|
+
'@close': [];
|
|
44
|
+
};
|
|
45
|
+
export declare type ProducerObserverEvents = {
|
|
46
|
+
close: [];
|
|
47
|
+
pause: [];
|
|
48
|
+
resume: [];
|
|
49
|
+
trackended: [];
|
|
50
|
+
};
|
|
51
|
+
export declare class Producer extends EnhancedEventEmitter<ProducerEvents> {
|
|
25
52
|
private readonly _id;
|
|
26
53
|
private readonly _localId;
|
|
27
54
|
private _closed;
|
|
@@ -35,16 +62,7 @@ export declare class Producer extends EnhancedEventEmitter {
|
|
|
35
62
|
private _disableTrackOnPause;
|
|
36
63
|
private _zeroRtpOnPause;
|
|
37
64
|
private readonly _appData;
|
|
38
|
-
protected readonly _observer: EnhancedEventEmitter
|
|
39
|
-
/**
|
|
40
|
-
* @emits transportclose
|
|
41
|
-
* @emits trackended
|
|
42
|
-
* @emits @replacetrack - (track: MediaStreamTrack | null)
|
|
43
|
-
* @emits @setmaxspatiallayer - (spatialLayer: string)
|
|
44
|
-
* @emits @setrtpencodingparameters - (params: any)
|
|
45
|
-
* @emits @getstats
|
|
46
|
-
* @emits @close
|
|
47
|
-
*/
|
|
65
|
+
protected readonly _observer: EnhancedEventEmitter<ProducerObserverEvents>;
|
|
48
66
|
constructor({ id, localId, rtpSender, track, rtpParameters, stopTracks, disableTrackOnPause, zeroRtpOnPause, appData }: {
|
|
49
67
|
id: string;
|
|
50
68
|
localId: string;
|
|
@@ -54,7 +72,7 @@ export declare class Producer extends EnhancedEventEmitter {
|
|
|
54
72
|
stopTracks: boolean;
|
|
55
73
|
disableTrackOnPause: boolean;
|
|
56
74
|
zeroRtpOnPause: boolean;
|
|
57
|
-
appData
|
|
75
|
+
appData?: Record<string, unknown>;
|
|
58
76
|
});
|
|
59
77
|
/**
|
|
60
78
|
* Producer id.
|
|
@@ -71,7 +89,7 @@ export declare class Producer extends EnhancedEventEmitter {
|
|
|
71
89
|
/**
|
|
72
90
|
* Media kind.
|
|
73
91
|
*/
|
|
74
|
-
get kind():
|
|
92
|
+
get kind(): MediaKind;
|
|
75
93
|
/**
|
|
76
94
|
* Associated RTCRtpSender.
|
|
77
95
|
*/
|
|
@@ -97,19 +115,11 @@ export declare class Producer extends EnhancedEventEmitter {
|
|
|
97
115
|
/**
|
|
98
116
|
* App custom data.
|
|
99
117
|
*/
|
|
100
|
-
get appData():
|
|
118
|
+
get appData(): Record<string, unknown>;
|
|
101
119
|
/**
|
|
102
120
|
* Invalid setter.
|
|
103
121
|
*/
|
|
104
|
-
set appData(appData:
|
|
105
|
-
/**
|
|
106
|
-
* Observer.
|
|
107
|
-
*
|
|
108
|
-
* @emits close
|
|
109
|
-
* @emits pause
|
|
110
|
-
* @emits resume
|
|
111
|
-
* @emits trackended
|
|
112
|
-
*/
|
|
122
|
+
set appData(appData: Record<string, unknown>);
|
|
113
123
|
get observer(): EnhancedEventEmitter;
|
|
114
124
|
/**
|
|
115
125
|
* Closes the Producer.
|
|
@@ -141,9 +151,6 @@ export declare class Producer extends EnhancedEventEmitter {
|
|
|
141
151
|
* Sets the video max spatial layer to be sent.
|
|
142
152
|
*/
|
|
143
153
|
setMaxSpatialLayer(spatialLayer: number): Promise<void>;
|
|
144
|
-
/**
|
|
145
|
-
* Sets the DSCP value.
|
|
146
|
-
*/
|
|
147
154
|
setRtpEncodingParameters(params: RTCRtpEncodingParameters): Promise<void>;
|
|
148
155
|
private _onTrackEnded;
|
|
149
156
|
private _handleTrack;
|
package/lib/Producer.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Producer.d.ts","sourceRoot":"","sources":["../src/Producer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,
|
|
1
|
+
{"version":3,"file":"Producer.d.ts","sourceRoot":"","sources":["../src/Producer.ts"],"names":[],"mappings":"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"}
|
package/lib/Producer.js
CHANGED
|
@@ -6,15 +6,6 @@ const EnhancedEventEmitter_1 = require("./EnhancedEventEmitter");
|
|
|
6
6
|
const errors_1 = require("./errors");
|
|
7
7
|
const logger = new Logger_1.Logger('Producer');
|
|
8
8
|
class Producer extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
9
|
-
/**
|
|
10
|
-
* @emits transportclose
|
|
11
|
-
* @emits trackended
|
|
12
|
-
* @emits @replacetrack - (track: MediaStreamTrack | null)
|
|
13
|
-
* @emits @setmaxspatiallayer - (spatialLayer: string)
|
|
14
|
-
* @emits @setrtpencodingparameters - (params: any)
|
|
15
|
-
* @emits @getstats
|
|
16
|
-
* @emits @close
|
|
17
|
-
*/
|
|
18
9
|
constructor({ id, localId, rtpSender, track, rtpParameters, stopTracks, disableTrackOnPause, zeroRtpOnPause, appData }) {
|
|
19
10
|
super();
|
|
20
11
|
// Closed flag.
|
|
@@ -33,7 +24,7 @@ class Producer extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
33
24
|
this._stopTracks = stopTracks;
|
|
34
25
|
this._disableTrackOnPause = disableTrackOnPause;
|
|
35
26
|
this._zeroRtpOnPause = zeroRtpOnPause;
|
|
36
|
-
this._appData = appData;
|
|
27
|
+
this._appData = appData || {};
|
|
37
28
|
this._onTrackEnded = this._onTrackEnded.bind(this);
|
|
38
29
|
// NOTE: Minor issue. If zeroRtpOnPause is true, we cannot emit the
|
|
39
30
|
// '@replacetrack' event here, so RTCRtpSender.track won't be null.
|
|
@@ -104,17 +95,10 @@ class Producer extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
104
95
|
/**
|
|
105
96
|
* Invalid setter.
|
|
106
97
|
*/
|
|
98
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
107
99
|
set appData(appData) {
|
|
108
100
|
throw new Error('cannot override appData object');
|
|
109
101
|
}
|
|
110
|
-
/**
|
|
111
|
-
* Observer.
|
|
112
|
-
*
|
|
113
|
-
* @emits close
|
|
114
|
-
* @emits pause
|
|
115
|
-
* @emits resume
|
|
116
|
-
* @emits trackended
|
|
117
|
-
*/
|
|
118
102
|
get observer() {
|
|
119
103
|
return this._observer;
|
|
120
104
|
}
|
|
@@ -150,7 +134,9 @@ class Producer extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
150
134
|
async getStats() {
|
|
151
135
|
if (this._closed)
|
|
152
136
|
throw new errors_1.InvalidStateError('closed');
|
|
153
|
-
return
|
|
137
|
+
return new Promise((resolve, reject) => {
|
|
138
|
+
this.safeEmit('@getstats', resolve, reject);
|
|
139
|
+
});
|
|
154
140
|
}
|
|
155
141
|
/**
|
|
156
142
|
* Pauses sending media.
|
|
@@ -166,8 +152,9 @@ class Producer extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
166
152
|
this._track.enabled = false;
|
|
167
153
|
}
|
|
168
154
|
if (this._zeroRtpOnPause) {
|
|
169
|
-
|
|
170
|
-
.
|
|
155
|
+
new Promise((resolve, reject) => {
|
|
156
|
+
this.safeEmit('@replacetrack', null, resolve, reject);
|
|
157
|
+
}).catch(() => { });
|
|
171
158
|
}
|
|
172
159
|
// Emit observer event.
|
|
173
160
|
this._observer.safeEmit('pause');
|
|
@@ -186,8 +173,9 @@ class Producer extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
186
173
|
this._track.enabled = true;
|
|
187
174
|
}
|
|
188
175
|
if (this._zeroRtpOnPause) {
|
|
189
|
-
|
|
190
|
-
.
|
|
176
|
+
new Promise((resolve, reject) => {
|
|
177
|
+
this.safeEmit('@replacetrack', this._track, resolve, reject);
|
|
178
|
+
}).catch(() => { });
|
|
191
179
|
}
|
|
192
180
|
// Emit observer event.
|
|
193
181
|
this._observer.safeEmit('resume');
|
|
@@ -217,7 +205,9 @@ class Producer extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
217
205
|
return;
|
|
218
206
|
}
|
|
219
207
|
if (!this._zeroRtpOnPause || !this._paused) {
|
|
220
|
-
await
|
|
208
|
+
await new Promise((resolve, reject) => {
|
|
209
|
+
this.safeEmit('@replacetrack', track, resolve, reject);
|
|
210
|
+
});
|
|
221
211
|
}
|
|
222
212
|
// Destroy the previous track.
|
|
223
213
|
this._destroyTrack();
|
|
@@ -246,18 +236,19 @@ class Producer extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
246
236
|
throw new TypeError('invalid spatialLayer');
|
|
247
237
|
if (spatialLayer === this._maxSpatialLayer)
|
|
248
238
|
return;
|
|
249
|
-
await
|
|
239
|
+
await new Promise((resolve, reject) => {
|
|
240
|
+
this.safeEmit('@setmaxspatiallayer', spatialLayer, resolve, reject);
|
|
241
|
+
}).catch(() => { });
|
|
250
242
|
this._maxSpatialLayer = spatialLayer;
|
|
251
243
|
}
|
|
252
|
-
/**
|
|
253
|
-
* Sets the DSCP value.
|
|
254
|
-
*/
|
|
255
244
|
async setRtpEncodingParameters(params) {
|
|
256
245
|
if (this._closed)
|
|
257
246
|
throw new errors_1.InvalidStateError('closed');
|
|
258
247
|
else if (typeof params !== 'object')
|
|
259
248
|
throw new TypeError('invalid params');
|
|
260
|
-
await
|
|
249
|
+
await new Promise((resolve, reject) => {
|
|
250
|
+
this.safeEmit('@setrtpencodingparameters', params, resolve, reject);
|
|
251
|
+
});
|
|
261
252
|
}
|
|
262
253
|
_onTrackEnded() {
|
|
263
254
|
logger.debug('track "ended" event');
|
package/lib/Transport.d.ts
CHANGED
|
@@ -4,7 +4,8 @@ import { Producer, ProducerOptions } from './Producer';
|
|
|
4
4
|
import { Consumer, ConsumerOptions } from './Consumer';
|
|
5
5
|
import { DataProducer, DataProducerOptions } from './DataProducer';
|
|
6
6
|
import { DataConsumer, DataConsumerOptions } from './DataConsumer';
|
|
7
|
-
import {
|
|
7
|
+
import { RtpParameters, MediaKind } from './RtpParameters';
|
|
8
|
+
import { SctpParameters, SctpStreamParameters } from './SctpParameters';
|
|
8
9
|
interface InternalTransportOptions extends TransportOptions {
|
|
9
10
|
direction: 'send' | 'recv';
|
|
10
11
|
handlerFactory: HandlerFactory;
|
|
@@ -21,7 +22,7 @@ export declare type TransportOptions = {
|
|
|
21
22
|
iceTransportPolicy?: RTCIceTransportPolicy;
|
|
22
23
|
additionalSettings?: any;
|
|
23
24
|
proprietaryConstraints?: any;
|
|
24
|
-
appData?:
|
|
25
|
+
appData?: Record<string, unknown>;
|
|
25
26
|
};
|
|
26
27
|
export declare type CanProduceByKind = {
|
|
27
28
|
audio: boolean;
|
|
@@ -100,7 +101,43 @@ export declare type PlainRtpParameters = {
|
|
|
100
101
|
ipVersion: 4 | 6;
|
|
101
102
|
port: number;
|
|
102
103
|
};
|
|
103
|
-
export declare
|
|
104
|
+
export declare type TransportEvents = {
|
|
105
|
+
connect: [{
|
|
106
|
+
dtlsParameters: DtlsParameters;
|
|
107
|
+
}, () => void, (error: Error) => void];
|
|
108
|
+
connectionstatechange: [ConnectionState];
|
|
109
|
+
produce: [
|
|
110
|
+
{
|
|
111
|
+
kind: MediaKind;
|
|
112
|
+
rtpParameters: RtpParameters;
|
|
113
|
+
appData: Record<string, unknown>;
|
|
114
|
+
},
|
|
115
|
+
({ id }: {
|
|
116
|
+
id: string;
|
|
117
|
+
}) => void,
|
|
118
|
+
(error: Error) => void
|
|
119
|
+
];
|
|
120
|
+
producedata: [
|
|
121
|
+
{
|
|
122
|
+
sctpStreamParameters: SctpStreamParameters;
|
|
123
|
+
label?: string;
|
|
124
|
+
protocol?: string;
|
|
125
|
+
appData: Record<string, unknown>;
|
|
126
|
+
},
|
|
127
|
+
({ id }: {
|
|
128
|
+
id: string;
|
|
129
|
+
}) => void,
|
|
130
|
+
(error: Error) => void
|
|
131
|
+
];
|
|
132
|
+
};
|
|
133
|
+
export declare type TransportObserverEvents = {
|
|
134
|
+
close: [];
|
|
135
|
+
newproducer: [Producer];
|
|
136
|
+
newconsumer: [Consumer];
|
|
137
|
+
newdataproducer: [DataProducer];
|
|
138
|
+
newdataconsumer: [DataConsumer];
|
|
139
|
+
};
|
|
140
|
+
export declare class Transport extends EnhancedEventEmitter<TransportEvents> {
|
|
104
141
|
private readonly _id;
|
|
105
142
|
private _closed;
|
|
106
143
|
private readonly _direction;
|
|
@@ -118,13 +155,11 @@ export declare class Transport extends EnhancedEventEmitter {
|
|
|
118
155
|
private readonly _awaitQueue;
|
|
119
156
|
private _pendingConsumerTasks;
|
|
120
157
|
private _consumerCreationInProgress;
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
* @emits producedata - (dataProducerLocalParameters: any, callback: Function, errback: Function)
|
|
127
|
-
*/
|
|
158
|
+
private _pendingPauseConsumers;
|
|
159
|
+
private _consumerPauseInProgress;
|
|
160
|
+
private _pendingResumeConsumers;
|
|
161
|
+
private _consumerResumeInProgress;
|
|
162
|
+
protected readonly _observer: EnhancedEventEmitter<TransportObserverEvents>;
|
|
128
163
|
constructor({ direction, id, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, appData, handlerFactory, extendedRtpCapabilities, canProduceByKind }: InternalTransportOptions);
|
|
129
164
|
/**
|
|
130
165
|
* Transport id.
|
|
@@ -149,20 +184,11 @@ export declare class Transport extends EnhancedEventEmitter {
|
|
|
149
184
|
/**
|
|
150
185
|
* App custom data.
|
|
151
186
|
*/
|
|
152
|
-
get appData():
|
|
187
|
+
get appData(): Record<string, unknown>;
|
|
153
188
|
/**
|
|
154
189
|
* Invalid setter.
|
|
155
190
|
*/
|
|
156
|
-
set appData(appData:
|
|
157
|
-
/**
|
|
158
|
-
* Observer.
|
|
159
|
-
*
|
|
160
|
-
* @emits close
|
|
161
|
-
* @emits newproducer - (producer: Producer)
|
|
162
|
-
* @emits newconsumer - (producer: Producer)
|
|
163
|
-
* @emits newdataproducer - (dataProducer: DataProducer)
|
|
164
|
-
* @emits newdataconsumer - (dataProducer: DataProducer)
|
|
165
|
-
*/
|
|
191
|
+
set appData(appData: Record<string, unknown>);
|
|
166
192
|
get observer(): EnhancedEventEmitter;
|
|
167
193
|
/**
|
|
168
194
|
* Close the Transport.
|
|
@@ -203,6 +229,8 @@ export declare class Transport extends EnhancedEventEmitter {
|
|
|
203
229
|
*/
|
|
204
230
|
consumeData({ id, dataProducerId, sctpStreamParameters, label, protocol, appData }: DataConsumerOptions): Promise<DataConsumer>;
|
|
205
231
|
_createPendingConsumers(): Promise<void>;
|
|
232
|
+
_pausePendingConsumers(): void;
|
|
233
|
+
_resumePendingConsumers(): void;
|
|
206
234
|
_handleHandler(): void;
|
|
207
235
|
_handleProducer(producer: Producer): void;
|
|
208
236
|
_handleConsumer(consumer: Consumer): void;
|
package/lib/Transport.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Transport.d.ts","sourceRoot":"","sources":["../src/Transport.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAyB,MAAM,6BAA6B,CAAC;AACtG,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"Transport.d.ts","sourceRoot":"","sources":["../src/Transport.ts"],"names":[],"mappings":"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"}
|
package/lib/Transport.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -30,6 +34,7 @@ const Producer_1 = require("./Producer");
|
|
|
30
34
|
const Consumer_1 = require("./Consumer");
|
|
31
35
|
const DataProducer_1 = require("./DataProducer");
|
|
32
36
|
const DataConsumer_1 = require("./DataConsumer");
|
|
37
|
+
const logger = new Logger_1.Logger('Transport');
|
|
33
38
|
class ConsumerCreationTask {
|
|
34
39
|
constructor(consumerOptions) {
|
|
35
40
|
this.consumerOptions = consumerOptions;
|
|
@@ -39,14 +44,7 @@ class ConsumerCreationTask {
|
|
|
39
44
|
});
|
|
40
45
|
}
|
|
41
46
|
}
|
|
42
|
-
const logger = new Logger_1.Logger('Transport');
|
|
43
47
|
class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
44
|
-
/**
|
|
45
|
-
* @emits connect - (transportLocalParameters: any, callback: Function, errback: Function)
|
|
46
|
-
* @emits connectionstatechange - (connectionState: ConnectionState)
|
|
47
|
-
* @emits produce - (producerLocalParameters: any, callback: Function, errback: Function)
|
|
48
|
-
* @emits producedata - (dataProducerLocalParameters: any, callback: Function, errback: Function)
|
|
49
|
-
*/
|
|
50
48
|
constructor({ direction, id, iceParameters, iceCandidates, dtlsParameters, sctpParameters, iceServers, iceTransportPolicy, additionalSettings, proprietaryConstraints, appData, handlerFactory, extendedRtpCapabilities, canProduceByKind }) {
|
|
51
49
|
super();
|
|
52
50
|
// Closed flag.
|
|
@@ -69,6 +67,14 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
69
67
|
this._pendingConsumerTasks = [];
|
|
70
68
|
// Consumer creation in progress flag.
|
|
71
69
|
this._consumerCreationInProgress = false;
|
|
70
|
+
// Consumers pending to be paused.
|
|
71
|
+
this._pendingPauseConsumers = new Map();
|
|
72
|
+
// Consumer pause in progress flag.
|
|
73
|
+
this._consumerPauseInProgress = false;
|
|
74
|
+
// Consumers pending to be resumed.
|
|
75
|
+
this._pendingResumeConsumers = new Map();
|
|
76
|
+
// Consumer resume in progress flag.
|
|
77
|
+
this._consumerResumeInProgress = false;
|
|
72
78
|
// Observer instance.
|
|
73
79
|
this._observer = new EnhancedEventEmitter_1.EnhancedEventEmitter();
|
|
74
80
|
logger.debug('constructor() [id:%s, direction:%s]', id, direction);
|
|
@@ -98,7 +104,7 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
98
104
|
proprietaryConstraints,
|
|
99
105
|
extendedRtpCapabilities
|
|
100
106
|
});
|
|
101
|
-
this._appData = appData;
|
|
107
|
+
this._appData = appData || {};
|
|
102
108
|
this._handleHandler();
|
|
103
109
|
}
|
|
104
110
|
/**
|
|
@@ -140,18 +146,10 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
140
146
|
/**
|
|
141
147
|
* Invalid setter.
|
|
142
148
|
*/
|
|
149
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
143
150
|
set appData(appData) {
|
|
144
151
|
throw new Error('cannot override appData object');
|
|
145
152
|
}
|
|
146
|
-
/**
|
|
147
|
-
* Observer.
|
|
148
|
-
*
|
|
149
|
-
* @emits close
|
|
150
|
-
* @emits newproducer - (producer: Producer)
|
|
151
|
-
* @emits newconsumer - (producer: Producer)
|
|
152
|
-
* @emits newdataproducer - (dataProducer: DataProducer)
|
|
153
|
-
* @emits newdataconsumer - (dataProducer: DataProducer)
|
|
154
|
-
*/
|
|
155
153
|
get observer() {
|
|
156
154
|
return this._observer;
|
|
157
155
|
}
|
|
@@ -286,10 +284,12 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
286
284
|
try {
|
|
287
285
|
// This will fill rtpParameters's missing fields with default values.
|
|
288
286
|
ortc.validateRtpParameters(rtpParameters);
|
|
289
|
-
const { id } = await
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
287
|
+
const { id } = await new Promise((resolve, reject) => {
|
|
288
|
+
this.safeEmit('produce', {
|
|
289
|
+
kind: track.kind,
|
|
290
|
+
rtpParameters,
|
|
291
|
+
appData
|
|
292
|
+
}, resolve, reject);
|
|
293
293
|
});
|
|
294
294
|
const producer = new Producer_1.Producer({
|
|
295
295
|
id,
|
|
@@ -393,11 +393,13 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
393
393
|
});
|
|
394
394
|
// This will fill sctpStreamParameters's missing fields with default values.
|
|
395
395
|
ortc.validateSctpStreamParameters(sctpStreamParameters);
|
|
396
|
-
const { id } = await
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
|
|
396
|
+
const { id } = await new Promise((resolve, reject) => {
|
|
397
|
+
this.safeEmit('producedata', {
|
|
398
|
+
sctpStreamParameters,
|
|
399
|
+
label,
|
|
400
|
+
protocol,
|
|
401
|
+
appData
|
|
402
|
+
}, resolve, reject);
|
|
401
403
|
});
|
|
402
404
|
const dataProducer = new DataProducer_1.DataProducer({ id, dataChannel, sctpStreamParameters, appData });
|
|
403
405
|
this._dataProducers.set(dataProducer.id, dataProducer);
|
|
@@ -529,6 +531,52 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
529
531
|
// NOTE: We only get here when the await queue is closed.
|
|
530
532
|
.catch(() => { });
|
|
531
533
|
}
|
|
534
|
+
_pausePendingConsumers() {
|
|
535
|
+
this._awaitQueue.push(async () => {
|
|
536
|
+
this._consumerPauseInProgress = true;
|
|
537
|
+
const pendingPauseConsumers = Array.from(this._pendingPauseConsumers.values());
|
|
538
|
+
// Clear pending pause Consumer map.
|
|
539
|
+
this._pendingPauseConsumers.clear();
|
|
540
|
+
try {
|
|
541
|
+
await this._handler.pauseReceiving(pendingPauseConsumers.map((consumer) => consumer.localId));
|
|
542
|
+
}
|
|
543
|
+
catch (error) {
|
|
544
|
+
logger.error('_pausePendingConsumers() | failed to pause Consumers:', error);
|
|
545
|
+
}
|
|
546
|
+
this._consumerPauseInProgress = false;
|
|
547
|
+
}, 'consumer @pause event')
|
|
548
|
+
.then(() => {
|
|
549
|
+
// There are pending Consumers to be paused, do it.
|
|
550
|
+
if (this._pendingPauseConsumers.size > 0) {
|
|
551
|
+
this._pausePendingConsumers();
|
|
552
|
+
}
|
|
553
|
+
})
|
|
554
|
+
// NOTE: We only get here when the await queue is closed.
|
|
555
|
+
.catch(() => { });
|
|
556
|
+
}
|
|
557
|
+
_resumePendingConsumers() {
|
|
558
|
+
this._awaitQueue.push(async () => {
|
|
559
|
+
this._consumerResumeInProgress = true;
|
|
560
|
+
const pendingResumeConsumers = Array.from(this._pendingResumeConsumers.values());
|
|
561
|
+
// Clear pending resume Consumer map.
|
|
562
|
+
this._pendingResumeConsumers.clear();
|
|
563
|
+
try {
|
|
564
|
+
await this._handler.resumeReceiving(pendingResumeConsumers.map((consumer) => consumer.localId));
|
|
565
|
+
}
|
|
566
|
+
catch (error) {
|
|
567
|
+
logger.error('_resumePendingConsumers() | failed to resume Consumers:', error);
|
|
568
|
+
}
|
|
569
|
+
}, 'consumer @resume event')
|
|
570
|
+
.then(() => {
|
|
571
|
+
this._consumerResumeInProgress = false;
|
|
572
|
+
// There are pending Consumer to be resumed, do it.
|
|
573
|
+
if (this._pendingResumeConsumers.size > 0) {
|
|
574
|
+
this._resumePendingConsumers();
|
|
575
|
+
}
|
|
576
|
+
})
|
|
577
|
+
// NOTE: We only get here when the await queue is closed.
|
|
578
|
+
.catch(() => { });
|
|
579
|
+
}
|
|
532
580
|
_handleHandler() {
|
|
533
581
|
const handler = this._handler;
|
|
534
582
|
handler.on('@connect', ({ dtlsParameters }, callback, errback) => {
|
|
@@ -581,18 +629,36 @@ class Transport extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
|
581
629
|
_handleConsumer(consumer) {
|
|
582
630
|
consumer.on('@close', () => {
|
|
583
631
|
this._consumers.delete(consumer.id);
|
|
632
|
+
this._pendingPauseConsumers.delete(consumer.id);
|
|
633
|
+
this._pendingResumeConsumers.delete(consumer.id);
|
|
584
634
|
if (this._closed)
|
|
585
635
|
return;
|
|
586
636
|
this._awaitQueue.push(async () => this._handler.stopReceiving(consumer.localId), 'consumer @close event')
|
|
587
637
|
.catch(() => { });
|
|
588
638
|
});
|
|
589
639
|
consumer.on('@pause', () => {
|
|
590
|
-
|
|
591
|
-
|
|
640
|
+
// If Consumer is pending to be resumed, remove from pending resume list.
|
|
641
|
+
if (this._pendingResumeConsumers.has(consumer.id)) {
|
|
642
|
+
this._pendingResumeConsumers.delete(consumer.id);
|
|
643
|
+
}
|
|
644
|
+
// Store the Consumer into the pending list.
|
|
645
|
+
this._pendingPauseConsumers.set(consumer.id, consumer);
|
|
646
|
+
// There is no Consumer pause in progress, do it now.
|
|
647
|
+
if (this._consumerPauseInProgress === false) {
|
|
648
|
+
this._pausePendingConsumers();
|
|
649
|
+
}
|
|
592
650
|
});
|
|
593
651
|
consumer.on('@resume', () => {
|
|
594
|
-
|
|
595
|
-
|
|
652
|
+
// If Consumer is pending to be paused, remove from pending pause list.
|
|
653
|
+
if (this._pendingPauseConsumers.has(consumer.id)) {
|
|
654
|
+
this._pendingPauseConsumers.delete(consumer.id);
|
|
655
|
+
}
|
|
656
|
+
// Store the Consumer into the pending list.
|
|
657
|
+
this._pendingResumeConsumers.set(consumer.id, consumer);
|
|
658
|
+
// There is no Consumer resume in progress, do it now.
|
|
659
|
+
if (this._consumerResumeInProgress === false) {
|
|
660
|
+
this._resumePendingConsumers();
|
|
661
|
+
}
|
|
596
662
|
});
|
|
597
663
|
consumer.on('@getstats', (callback, errback) => {
|
|
598
664
|
if (this._closed)
|
|
@@ -38,8 +38,8 @@ export declare class Chrome55 extends HandlerInterface {
|
|
|
38
38
|
sendDataChannel({ ordered, maxPacketLifeTime, maxRetransmits, label, protocol }: HandlerSendDataChannelOptions): Promise<HandlerSendDataChannelResult>;
|
|
39
39
|
receive(optionsList: HandlerReceiveOptions[]): Promise<HandlerReceiveResult[]>;
|
|
40
40
|
stopReceiving(localId: string): Promise<void>;
|
|
41
|
-
pauseReceiving(
|
|
42
|
-
resumeReceiving(
|
|
41
|
+
pauseReceiving(localIds: string[]): Promise<void>;
|
|
42
|
+
resumeReceiving(localIds: string[]): Promise<void>;
|
|
43
43
|
getReceiverStats(localId: string): Promise<RTCStatsReport>;
|
|
44
44
|
receiveDataChannel({ sctpStreamParameters, label, protocol }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
|
|
45
45
|
private _setupTransport;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chrome55.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome55.ts"],"names":[],"mappings":"AAOA,OAAO,EACN,cAAc,EACd,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,aAAa,EAAY,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,eAAe,EAAiB,MAAM,kBAAkB,CAAC;AAClE,OAAO,EAAE,gBAAgB,EAAwB,MAAM,mBAAmB,CAAC;AAM3E,qBAAa,QAAS,SAAQ,gBAAgB;IAG7C,OAAO,CAAC,UAAU,CAAC,CAAkB;IAErC,OAAO,CAAC,UAAU,CAAC,CAAY;IAE/B,OAAO,CAAC,2BAA2B,CAAC,CAAmC;IAGvE,OAAO,CAAC,iCAAiC,CAAC,CAAmC;IAG7E,OAAO,CAAC,oBAAoB,CAAC,CAAW;IAExC,OAAO,CAAC,GAAG,CAAM;IAEjB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAqB;IAEjD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA4C;IAEjF,OAAO,CAAC,gBAAgB,CAAK;IAG7B,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAOrB;IAEf,OAAO,CAAC,2BAA2B,CAAS;IAE5C,OAAO,CAAC,qBAAqB,CAAK;IAElC,OAAO,CAAC,eAAe,CAAS;IAEhC;;OAEG;IACH,MAAM,CAAC,aAAa,IAAI,cAAc;;IAUtC,IAAI,IAAI,IAAI,MAAM,CAGjB;IAED,KAAK,IAAI,IAAI;IAYP,wBAAwB,IAAI,OAAO,CAAC,eAAe,CAAC;IAuCpD,yBAAyB,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAS5D,GAAG,CACF,EACC,SAAS,EACT,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,UAAU,EACV,kBAAkB,EAClB,kBAAkB,EAClB,sBAAsB,EACtB,uBAAuB,EACvB,EAAE,iBAAiB,GAClB,IAAI;IAsED,gBAAgB,CAAC,UAAU,EAAE,YAAY,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAW3D,UAAU,CAAC,aAAa,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAgDvD,iBAAiB,IAAI,OAAO,CAAC,cAAc,CAAC;IAK5C,IAAI,CACT,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,KAAK,EAAE,EAAE,kBAAkB,GAC3D,OAAO,CAAC,iBAAiB,CAAC;IAgIvB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAqD3C,YAAY,CAEjB,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,gBAAgB,GAAG,IAAI,GAC7C,OAAO,CAAC,IAAI,CAAC;IAMV,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxE,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrE,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAKxD,eAAe,CACpB,EACC,OAAO,EACP,iBAAiB,EACjB,cAAc,EACd,KAAK,EACL,QAAQ,EACR,EAAE,6BAA6B,GAC9B,OAAO,CAAC,4BAA4B,CAAC;IAuElC,OAAO,CACZ,WAAW,EAAE,qBAAqB,EAAE,GACjC,OAAO,CAAC,oBAAoB,EAAE,CAAC;IA2F7B,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA+B7C,cAAc,CAEnB,
|
|
1
|
+
{"version":3,"file":"Chrome55.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome55.ts"],"names":[],"mappings":"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"}
|
package/lib/handlers/Chrome55.js
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
3
|
if (k2 === undefined) k2 = k;
|
|
4
|
-
Object.
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
5
9
|
}) : (function(o, m, k, k2) {
|
|
6
10
|
if (k2 === undefined) k2 = k;
|
|
7
11
|
o[k2] = m[k];
|
|
@@ -438,12 +442,12 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
438
442
|
}
|
|
439
443
|
async pauseReceiving(
|
|
440
444
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
441
|
-
|
|
445
|
+
localIds) {
|
|
442
446
|
// Unimplemented.
|
|
443
447
|
}
|
|
444
448
|
async resumeReceiving(
|
|
445
449
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
446
|
-
|
|
450
|
+
localIds) {
|
|
447
451
|
// Unimplemented.
|
|
448
452
|
}
|
|
449
453
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
@@ -496,7 +500,9 @@ class Chrome55 extends HandlerInterface_1.HandlerInterface {
|
|
|
496
500
|
// Update the remote DTLS role in the SDP.
|
|
497
501
|
this._remoteSdp.updateDtlsRole(localDtlsRole === 'client' ? 'server' : 'client');
|
|
498
502
|
// Need to tell the remote transport about our parameters.
|
|
499
|
-
await
|
|
503
|
+
await new Promise((resolve, reject) => {
|
|
504
|
+
this.safeEmit('@connect', { dtlsParameters }, resolve, reject);
|
|
505
|
+
});
|
|
500
506
|
this._transportReady = true;
|
|
501
507
|
}
|
|
502
508
|
_assertSendDirection() {
|