mediasoup-client 3.6.90 → 3.6.91
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 +115 -0
- package/lib/Consumer.d.ts.map +1 -0
- package/lib/Consumer.js +190 -0
- package/lib/DataConsumer.d.ts +93 -0
- package/lib/DataConsumer.d.ts.map +1 -0
- package/lib/DataConsumer.js +162 -0
- package/lib/DataProducer.d.ts +97 -0
- package/lib/DataProducer.d.ts.map +1 -0
- package/lib/DataProducer.js +180 -0
- package/lib/Device.d.ts +92 -0
- package/lib/Device.d.ts.map +1 -0
- package/lib/Device.js +463 -0
- package/lib/EnhancedEventEmitter.d.ts +24 -0
- package/lib/EnhancedEventEmitter.d.ts.map +1 -0
- package/lib/EnhancedEventEmitter.js +70 -0
- package/lib/Logger.d.ts +11 -0
- package/lib/Logger.d.ts.map +1 -0
- package/lib/Logger.js +37 -0
- package/lib/Producer.d.ts +169 -0
- package/lib/Producer.d.ts.map +1 -0
- package/lib/Producer.js +287 -0
- package/lib/RtpParameters.d.ts +306 -0
- package/lib/RtpParameters.d.ts.map +1 -0
- package/lib/RtpParameters.js +6 -0
- package/lib/SctpParameters.d.ts +68 -0
- package/lib/SctpParameters.d.ts.map +1 -0
- package/lib/SctpParameters.js +2 -0
- package/lib/Transport.d.ts +243 -0
- package/lib/Transport.d.ts.map +1 -0
- package/lib/Transport.js +824 -0
- package/lib/errors.d.ts +13 -0
- package/lib/errors.d.ts.map +1 -0
- package/lib/errors.js +39 -0
- package/lib/handlers/Chrome111.d.ts +49 -0
- package/lib/handlers/Chrome111.d.ts.map +1 -0
- package/lib/handlers/Chrome111.js +654 -0
- package/lib/handlers/Chrome55.d.ts +51 -0
- package/lib/handlers/Chrome55.d.ts.map +1 -0
- package/lib/handlers/Chrome55.js +538 -0
- package/lib/handlers/Chrome67.d.ts +51 -0
- package/lib/handlers/Chrome67.d.ts.map +1 -0
- package/lib/handlers/Chrome67.js +594 -0
- package/lib/handlers/Chrome70.d.ts +49 -0
- package/lib/handlers/Chrome70.d.ts.map +1 -0
- package/lib/handlers/Chrome70.js +623 -0
- package/lib/handlers/Chrome74.d.ts +49 -0
- package/lib/handlers/Chrome74.d.ts.map +1 -0
- package/lib/handlers/Chrome74.js +671 -0
- package/lib/handlers/Edge11.d.ts +55 -0
- package/lib/handlers/Edge11.d.ts.map +1 -0
- package/lib/handlers/Edge11.js +447 -0
- package/lib/handlers/FakeHandler.d.ts +49 -0
- package/lib/handlers/FakeHandler.d.ts.map +1 -0
- package/lib/handlers/FakeHandler.js +276 -0
- package/lib/handlers/Firefox60.d.ts +48 -0
- package/lib/handlers/Firefox60.d.ts.map +1 -0
- package/lib/handlers/Firefox60.js +681 -0
- package/lib/handlers/HandlerInterface.d.ts +97 -0
- package/lib/handlers/HandlerInterface.d.ts.map +1 -0
- package/lib/handlers/HandlerInterface.js +10 -0
- package/lib/handlers/ReactNative.d.ts +51 -0
- package/lib/handlers/ReactNative.d.ts.map +1 -0
- package/lib/handlers/ReactNative.js +554 -0
- package/lib/handlers/ReactNativeUnifiedPlan.d.ts +49 -0
- package/lib/handlers/ReactNativeUnifiedPlan.d.ts.map +1 -0
- package/lib/handlers/ReactNativeUnifiedPlan.js +690 -0
- package/lib/handlers/Safari11.d.ts +51 -0
- package/lib/handlers/Safari11.d.ts.map +1 -0
- package/lib/handlers/Safari11.js +588 -0
- package/lib/handlers/Safari12.d.ts +49 -0
- package/lib/handlers/Safari12.d.ts.map +1 -0
- package/lib/handlers/Safari12.js +644 -0
- package/lib/handlers/ortc/edgeUtils.d.ts +11 -0
- package/lib/handlers/ortc/edgeUtils.d.ts.map +1 -0
- package/lib/handlers/ortc/edgeUtils.js +86 -0
- package/lib/handlers/ortc/utils.d.ts +6 -0
- package/lib/handlers/ortc/utils.d.ts.map +1 -0
- package/lib/handlers/ortc/utils.js +19 -0
- package/lib/handlers/sdp/MediaSection.d.ts +68 -0
- package/lib/handlers/sdp/MediaSection.d.ts.map +1 -0
- package/lib/handlers/sdp/MediaSection.js +588 -0
- package/lib/handlers/sdp/RemoteSdp.d.ts +75 -0
- package/lib/handlers/sdp/RemoteSdp.d.ts.map +1 -0
- package/lib/handlers/sdp/RemoteSdp.js +303 -0
- package/lib/handlers/sdp/commonUtils.d.ts +24 -0
- package/lib/handlers/sdp/commonUtils.d.ts.map +1 -0
- package/lib/handlers/sdp/commonUtils.js +224 -0
- package/lib/handlers/sdp/plainRtpUtils.d.ts +14 -0
- package/lib/handlers/sdp/plainRtpUtils.d.ts.map +1 -0
- package/lib/handlers/sdp/plainRtpUtils.js +33 -0
- package/lib/handlers/sdp/planBUtils.d.ts +14 -0
- package/lib/handlers/sdp/planBUtils.d.ts.map +1 -0
- package/lib/handlers/sdp/planBUtils.js +155 -0
- package/lib/handlers/sdp/unifiedPlanUtils.d.ts +12 -0
- package/lib/handlers/sdp/unifiedPlanUtils.d.ts.map +1 -0
- package/lib/handlers/sdp/unifiedPlanUtils.js +131 -0
- package/lib/index.d.ts +14 -1435
- package/lib/index.d.ts.map +1 -0
- package/lib/index.js +43 -11884
- package/lib/ortc.d.ts +123 -0
- package/lib/ortc.d.ts.map +1 -0
- package/lib/ortc.js +943 -0
- package/lib/scalabilityModes.d.ts +6 -0
- package/lib/scalabilityModes.d.ts.map +1 -0
- package/lib/scalabilityModes.js +20 -0
- package/lib/tests/fakeParameters.d.ts +20 -0
- package/lib/tests/fakeParameters.d.ts.map +1 -0
- package/lib/tests/fakeParameters.js +659 -0
- package/lib/tests/test.d.ts +6 -0
- package/lib/tests/test.d.ts.map +1 -0
- package/lib/tests/test.js +1287 -0
- package/lib/tests/uaTestCases.d.ts +9 -0
- package/lib/tests/uaTestCases.d.ts.map +1 -0
- package/lib/tests/uaTestCases.js +85 -0
- package/lib/types.d.ts +15 -0
- package/lib/types.d.ts.map +1 -0
- package/lib/types.js +26 -0
- package/lib/utils.d.ts +9 -0
- package/lib/utils.d.ts.map +1 -0
- package/lib/utils.js +20 -0
- package/npm-scripts.mjs +2 -3
- package/package.json +1 -6
- package/lib/index.js.map +0 -1
- package/lib/index.mjs +0 -11860
- package/lib/index.mjs.map +0 -1
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { EnhancedEventEmitter } from './EnhancedEventEmitter';
|
|
2
|
+
import { MediaKind, RtpParameters } from './RtpParameters';
|
|
3
|
+
import { AppData } from './types';
|
|
4
|
+
export type ConsumerOptions<ConsumerAppData extends AppData = AppData> = {
|
|
5
|
+
id?: string;
|
|
6
|
+
producerId?: string;
|
|
7
|
+
kind?: 'audio' | 'video';
|
|
8
|
+
rtpParameters: RtpParameters;
|
|
9
|
+
streamId?: string;
|
|
10
|
+
appData?: ConsumerAppData;
|
|
11
|
+
};
|
|
12
|
+
export type ConsumerEvents = {
|
|
13
|
+
transportclose: [];
|
|
14
|
+
trackended: [];
|
|
15
|
+
'@getstats': [(stats: RTCStatsReport) => void, (error: Error) => void];
|
|
16
|
+
'@close': [];
|
|
17
|
+
'@pause': [];
|
|
18
|
+
'@resume': [];
|
|
19
|
+
};
|
|
20
|
+
export type ConsumerObserverEvents = {
|
|
21
|
+
close: [];
|
|
22
|
+
pause: [];
|
|
23
|
+
resume: [];
|
|
24
|
+
trackended: [];
|
|
25
|
+
};
|
|
26
|
+
export declare class Consumer<ConsumerAppData extends AppData = AppData> extends EnhancedEventEmitter<ConsumerEvents> {
|
|
27
|
+
private readonly _id;
|
|
28
|
+
private readonly _localId;
|
|
29
|
+
private readonly _producerId;
|
|
30
|
+
private _closed;
|
|
31
|
+
private readonly _rtpReceiver?;
|
|
32
|
+
private readonly _track;
|
|
33
|
+
private readonly _rtpParameters;
|
|
34
|
+
private _paused;
|
|
35
|
+
private _appData;
|
|
36
|
+
protected readonly _observer: EnhancedEventEmitter<ConsumerObserverEvents>;
|
|
37
|
+
constructor({ id, localId, producerId, rtpReceiver, track, rtpParameters, appData }: {
|
|
38
|
+
id: string;
|
|
39
|
+
localId: string;
|
|
40
|
+
producerId: string;
|
|
41
|
+
rtpReceiver?: RTCRtpReceiver;
|
|
42
|
+
track: MediaStreamTrack;
|
|
43
|
+
rtpParameters: RtpParameters;
|
|
44
|
+
appData?: ConsumerAppData;
|
|
45
|
+
});
|
|
46
|
+
/**
|
|
47
|
+
* Consumer id.
|
|
48
|
+
*/
|
|
49
|
+
get id(): string;
|
|
50
|
+
/**
|
|
51
|
+
* Local id.
|
|
52
|
+
*/
|
|
53
|
+
get localId(): string;
|
|
54
|
+
/**
|
|
55
|
+
* Associated Producer id.
|
|
56
|
+
*/
|
|
57
|
+
get producerId(): string;
|
|
58
|
+
/**
|
|
59
|
+
* Whether the Consumer is closed.
|
|
60
|
+
*/
|
|
61
|
+
get closed(): boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Media kind.
|
|
64
|
+
*/
|
|
65
|
+
get kind(): MediaKind;
|
|
66
|
+
/**
|
|
67
|
+
* Associated RTCRtpReceiver.
|
|
68
|
+
*/
|
|
69
|
+
get rtpReceiver(): RTCRtpReceiver | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* The associated track.
|
|
72
|
+
*/
|
|
73
|
+
get track(): MediaStreamTrack;
|
|
74
|
+
/**
|
|
75
|
+
* RTP parameters.
|
|
76
|
+
*/
|
|
77
|
+
get rtpParameters(): RtpParameters;
|
|
78
|
+
/**
|
|
79
|
+
* Whether the Consumer is paused.
|
|
80
|
+
*/
|
|
81
|
+
get paused(): boolean;
|
|
82
|
+
/**
|
|
83
|
+
* App custom data.
|
|
84
|
+
*/
|
|
85
|
+
get appData(): ConsumerAppData;
|
|
86
|
+
/**
|
|
87
|
+
* App custom data setter.
|
|
88
|
+
*/
|
|
89
|
+
set appData(appData: ConsumerAppData);
|
|
90
|
+
get observer(): EnhancedEventEmitter;
|
|
91
|
+
/**
|
|
92
|
+
* Closes the Consumer.
|
|
93
|
+
*/
|
|
94
|
+
close(): void;
|
|
95
|
+
/**
|
|
96
|
+
* Transport was closed.
|
|
97
|
+
*/
|
|
98
|
+
transportClosed(): void;
|
|
99
|
+
/**
|
|
100
|
+
* Get associated RTCRtpReceiver stats.
|
|
101
|
+
*/
|
|
102
|
+
getStats(): Promise<RTCStatsReport>;
|
|
103
|
+
/**
|
|
104
|
+
* Pauses receiving media.
|
|
105
|
+
*/
|
|
106
|
+
pause(): void;
|
|
107
|
+
/**
|
|
108
|
+
* Resumes receiving media.
|
|
109
|
+
*/
|
|
110
|
+
resume(): void;
|
|
111
|
+
private onTrackEnded;
|
|
112
|
+
private handleTrack;
|
|
113
|
+
private destroyTrack;
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=Consumer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Consumer.d.ts","sourceRoot":"","sources":["../src/Consumer.ts"],"names":[],"mappings":"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"}
|
package/lib/Consumer.js
ADDED
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.Consumer = void 0;
|
|
4
|
+
const Logger_1 = require("./Logger");
|
|
5
|
+
const EnhancedEventEmitter_1 = require("./EnhancedEventEmitter");
|
|
6
|
+
const errors_1 = require("./errors");
|
|
7
|
+
const logger = new Logger_1.Logger('Consumer');
|
|
8
|
+
class Consumer extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
9
|
+
constructor({ id, localId, producerId, rtpReceiver, track, rtpParameters, appData }) {
|
|
10
|
+
super();
|
|
11
|
+
// Closed flag.
|
|
12
|
+
this._closed = false;
|
|
13
|
+
// Observer instance.
|
|
14
|
+
this._observer = new EnhancedEventEmitter_1.EnhancedEventEmitter();
|
|
15
|
+
logger.debug('constructor()');
|
|
16
|
+
this._id = id;
|
|
17
|
+
this._localId = localId;
|
|
18
|
+
this._producerId = producerId;
|
|
19
|
+
this._rtpReceiver = rtpReceiver;
|
|
20
|
+
this._track = track;
|
|
21
|
+
this._rtpParameters = rtpParameters;
|
|
22
|
+
this._paused = !track.enabled;
|
|
23
|
+
this._appData = appData || {};
|
|
24
|
+
this.onTrackEnded = this.onTrackEnded.bind(this);
|
|
25
|
+
this.handleTrack();
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Consumer id.
|
|
29
|
+
*/
|
|
30
|
+
get id() {
|
|
31
|
+
return this._id;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Local id.
|
|
35
|
+
*/
|
|
36
|
+
get localId() {
|
|
37
|
+
return this._localId;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Associated Producer id.
|
|
41
|
+
*/
|
|
42
|
+
get producerId() {
|
|
43
|
+
return this._producerId;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Whether the Consumer is closed.
|
|
47
|
+
*/
|
|
48
|
+
get closed() {
|
|
49
|
+
return this._closed;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Media kind.
|
|
53
|
+
*/
|
|
54
|
+
get kind() {
|
|
55
|
+
return this._track.kind;
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Associated RTCRtpReceiver.
|
|
59
|
+
*/
|
|
60
|
+
get rtpReceiver() {
|
|
61
|
+
return this._rtpReceiver;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* The associated track.
|
|
65
|
+
*/
|
|
66
|
+
get track() {
|
|
67
|
+
return this._track;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* RTP parameters.
|
|
71
|
+
*/
|
|
72
|
+
get rtpParameters() {
|
|
73
|
+
return this._rtpParameters;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Whether the Consumer is paused.
|
|
77
|
+
*/
|
|
78
|
+
get paused() {
|
|
79
|
+
return this._paused;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* App custom data.
|
|
83
|
+
*/
|
|
84
|
+
get appData() {
|
|
85
|
+
return this._appData;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* App custom data setter.
|
|
89
|
+
*/
|
|
90
|
+
set appData(appData) {
|
|
91
|
+
this._appData = appData;
|
|
92
|
+
}
|
|
93
|
+
get observer() {
|
|
94
|
+
return this._observer;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Closes the Consumer.
|
|
98
|
+
*/
|
|
99
|
+
close() {
|
|
100
|
+
if (this._closed) {
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
logger.debug('close()');
|
|
104
|
+
this._closed = true;
|
|
105
|
+
this.destroyTrack();
|
|
106
|
+
this.emit('@close');
|
|
107
|
+
// Emit observer event.
|
|
108
|
+
this._observer.safeEmit('close');
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Transport was closed.
|
|
112
|
+
*/
|
|
113
|
+
transportClosed() {
|
|
114
|
+
if (this._closed) {
|
|
115
|
+
return;
|
|
116
|
+
}
|
|
117
|
+
logger.debug('transportClosed()');
|
|
118
|
+
this._closed = true;
|
|
119
|
+
this.destroyTrack();
|
|
120
|
+
this.safeEmit('transportclose');
|
|
121
|
+
// Emit observer event.
|
|
122
|
+
this._observer.safeEmit('close');
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Get associated RTCRtpReceiver stats.
|
|
126
|
+
*/
|
|
127
|
+
async getStats() {
|
|
128
|
+
if (this._closed) {
|
|
129
|
+
throw new errors_1.InvalidStateError('closed');
|
|
130
|
+
}
|
|
131
|
+
return new Promise((resolve, reject) => {
|
|
132
|
+
this.safeEmit('@getstats', resolve, reject);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Pauses receiving media.
|
|
137
|
+
*/
|
|
138
|
+
pause() {
|
|
139
|
+
logger.debug('pause()');
|
|
140
|
+
if (this._closed) {
|
|
141
|
+
logger.error('pause() | Consumer closed');
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
if (this._paused) {
|
|
145
|
+
logger.debug('pause() | Consumer is already paused');
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
this._paused = true;
|
|
149
|
+
this._track.enabled = false;
|
|
150
|
+
this.emit('@pause');
|
|
151
|
+
// Emit observer event.
|
|
152
|
+
this._observer.safeEmit('pause');
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Resumes receiving media.
|
|
156
|
+
*/
|
|
157
|
+
resume() {
|
|
158
|
+
logger.debug('resume()');
|
|
159
|
+
if (this._closed) {
|
|
160
|
+
logger.error('resume() | Consumer closed');
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
if (!this._paused) {
|
|
164
|
+
logger.debug('resume() | Consumer is already resumed');
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
this._paused = false;
|
|
168
|
+
this._track.enabled = true;
|
|
169
|
+
this.emit('@resume');
|
|
170
|
+
// Emit observer event.
|
|
171
|
+
this._observer.safeEmit('resume');
|
|
172
|
+
}
|
|
173
|
+
onTrackEnded() {
|
|
174
|
+
logger.debug('track "ended" event');
|
|
175
|
+
this.safeEmit('trackended');
|
|
176
|
+
// Emit observer event.
|
|
177
|
+
this._observer.safeEmit('trackended');
|
|
178
|
+
}
|
|
179
|
+
handleTrack() {
|
|
180
|
+
this._track.addEventListener('ended', this.onTrackEnded);
|
|
181
|
+
}
|
|
182
|
+
destroyTrack() {
|
|
183
|
+
try {
|
|
184
|
+
this._track.removeEventListener('ended', this.onTrackEnded);
|
|
185
|
+
this._track.stop();
|
|
186
|
+
}
|
|
187
|
+
catch (error) { }
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
exports.Consumer = Consumer;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
import { EnhancedEventEmitter } from './EnhancedEventEmitter';
|
|
2
|
+
import { SctpStreamParameters } from './SctpParameters';
|
|
3
|
+
import { AppData } from './types';
|
|
4
|
+
export type DataConsumerOptions<DataConsumerAppData extends AppData = AppData> = {
|
|
5
|
+
id?: string;
|
|
6
|
+
dataProducerId?: string;
|
|
7
|
+
sctpStreamParameters: SctpStreamParameters;
|
|
8
|
+
label?: string;
|
|
9
|
+
protocol?: string;
|
|
10
|
+
appData?: DataConsumerAppData;
|
|
11
|
+
};
|
|
12
|
+
export type DataConsumerEvents = {
|
|
13
|
+
transportclose: [];
|
|
14
|
+
open: [];
|
|
15
|
+
error: [Error];
|
|
16
|
+
close: [];
|
|
17
|
+
message: [any];
|
|
18
|
+
'@close': [];
|
|
19
|
+
};
|
|
20
|
+
export type DataConsumerObserverEvents = {
|
|
21
|
+
close: [];
|
|
22
|
+
};
|
|
23
|
+
export declare class DataConsumer<DataConsumerAppData extends AppData = AppData> extends EnhancedEventEmitter<DataConsumerEvents> {
|
|
24
|
+
private readonly _id;
|
|
25
|
+
private readonly _dataProducerId;
|
|
26
|
+
private readonly _dataChannel;
|
|
27
|
+
private _closed;
|
|
28
|
+
private readonly _sctpStreamParameters;
|
|
29
|
+
private _appData;
|
|
30
|
+
protected readonly _observer: EnhancedEventEmitter<DataConsumerObserverEvents>;
|
|
31
|
+
constructor({ id, dataProducerId, dataChannel, sctpStreamParameters, appData }: {
|
|
32
|
+
id: string;
|
|
33
|
+
dataProducerId: string;
|
|
34
|
+
dataChannel: RTCDataChannel;
|
|
35
|
+
sctpStreamParameters: SctpStreamParameters;
|
|
36
|
+
appData?: DataConsumerAppData;
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* DataConsumer id.
|
|
40
|
+
*/
|
|
41
|
+
get id(): string;
|
|
42
|
+
/**
|
|
43
|
+
* Associated DataProducer id.
|
|
44
|
+
*/
|
|
45
|
+
get dataProducerId(): string;
|
|
46
|
+
/**
|
|
47
|
+
* Whether the DataConsumer is closed.
|
|
48
|
+
*/
|
|
49
|
+
get closed(): boolean;
|
|
50
|
+
/**
|
|
51
|
+
* SCTP stream parameters.
|
|
52
|
+
*/
|
|
53
|
+
get sctpStreamParameters(): SctpStreamParameters;
|
|
54
|
+
/**
|
|
55
|
+
* DataChannel readyState.
|
|
56
|
+
*/
|
|
57
|
+
get readyState(): RTCDataChannelState;
|
|
58
|
+
/**
|
|
59
|
+
* DataChannel label.
|
|
60
|
+
*/
|
|
61
|
+
get label(): string;
|
|
62
|
+
/**
|
|
63
|
+
* DataChannel protocol.
|
|
64
|
+
*/
|
|
65
|
+
get protocol(): string;
|
|
66
|
+
/**
|
|
67
|
+
* DataChannel binaryType.
|
|
68
|
+
*/
|
|
69
|
+
get binaryType(): BinaryType;
|
|
70
|
+
/**
|
|
71
|
+
* Set DataChannel binaryType.
|
|
72
|
+
*/
|
|
73
|
+
set binaryType(binaryType: BinaryType);
|
|
74
|
+
/**
|
|
75
|
+
* App custom data.
|
|
76
|
+
*/
|
|
77
|
+
get appData(): DataConsumerAppData;
|
|
78
|
+
/**
|
|
79
|
+
* App custom data setter.
|
|
80
|
+
*/
|
|
81
|
+
set appData(appData: DataConsumerAppData);
|
|
82
|
+
get observer(): EnhancedEventEmitter;
|
|
83
|
+
/**
|
|
84
|
+
* Closes the DataConsumer.
|
|
85
|
+
*/
|
|
86
|
+
close(): void;
|
|
87
|
+
/**
|
|
88
|
+
* Transport was closed.
|
|
89
|
+
*/
|
|
90
|
+
transportClosed(): void;
|
|
91
|
+
private handleDataChannel;
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=DataConsumer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataConsumer.d.ts","sourceRoot":"","sources":["../src/DataConsumer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIlC,MAAM,MAAM,mBAAmB,CAAC,mBAAmB,SAAS,OAAO,GAAG,OAAO,IAC7E;IACC,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,oBAAoB,CAAC;IAC3C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC9B;IACC,cAAc,EAAE,EAAE,CAAC;IACnB,IAAI,EAAE,EAAE,CAAC;IACT,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;IACf,KAAK,EAAE,EAAE,CAAC;IACV,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;IAEf,QAAQ,EAAE,EAAE,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,0BAA0B,GACtC;IACC,KAAK,EAAE,EAAE,CAAC;CACV,CAAC;AAEF,qBAAa,YAAY,CAAC,mBAAmB,SAAS,OAAO,GAAG,OAAO,CACtE,SAAQ,oBAAoB,CAAC,kBAAkB,CAAC;IAGhD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAE7B,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;IAEzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAE9C,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAuB;IAE7D,OAAO,CAAC,QAAQ,CAAsB;IAEtC,SAAS,CAAC,QAAQ,CAAC,SAAS,mDAA0D;gBAGrF,EACC,EAAE,EACF,cAAc,EACd,WAAW,EACX,oBAAoB,EACpB,OAAO,EACP,EACD;QACC,EAAE,EAAE,MAAM,CAAC;QACX,cAAc,EAAE,MAAM,CAAC;QACvB,WAAW,EAAE,cAAc,CAAC;QAC5B,oBAAoB,EAAE,oBAAoB,CAAC;QAC3C,OAAO,CAAC,EAAE,mBAAmB,CAAC;KAC9B;IAgBF;;OAEG;IACH,IAAI,EAAE,IAAI,MAAM,CAGf;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAG3B;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAGpB;IAED;;OAEG;IACH,IAAI,oBAAoB,IAAI,oBAAoB,CAG/C;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,mBAAmB,CAGpC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAGlB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAGrB;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,UAAU,CAG3B;IAED;;OAEG;IACH,IAAI,UAAU,CAAC,UAAU,EAAE,UAAU,EAGpC;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,mBAAmB,CAGjC;IAED;;OAEG;IACH,IAAI,OAAO,CAAC,OAAO,EAAE,mBAAmB,EAGvC;IAED,IAAI,QAAQ,IAAI,oBAAoB,CAGnC;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAmBb;;OAEG;IACH,eAAe,IAAI,IAAI;IAmBvB,OAAO,CAAC,iBAAiB;CAsEzB"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DataConsumer = void 0;
|
|
4
|
+
const Logger_1 = require("./Logger");
|
|
5
|
+
const EnhancedEventEmitter_1 = require("./EnhancedEventEmitter");
|
|
6
|
+
const logger = new Logger_1.Logger('DataConsumer');
|
|
7
|
+
class DataConsumer extends EnhancedEventEmitter_1.EnhancedEventEmitter {
|
|
8
|
+
constructor({ id, dataProducerId, dataChannel, sctpStreamParameters, appData }) {
|
|
9
|
+
super();
|
|
10
|
+
// Closed flag.
|
|
11
|
+
this._closed = false;
|
|
12
|
+
// Observer instance.
|
|
13
|
+
this._observer = new EnhancedEventEmitter_1.EnhancedEventEmitter();
|
|
14
|
+
logger.debug('constructor()');
|
|
15
|
+
this._id = id;
|
|
16
|
+
this._dataProducerId = dataProducerId;
|
|
17
|
+
this._dataChannel = dataChannel;
|
|
18
|
+
this._sctpStreamParameters = sctpStreamParameters;
|
|
19
|
+
this._appData = appData || {};
|
|
20
|
+
this.handleDataChannel();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* DataConsumer id.
|
|
24
|
+
*/
|
|
25
|
+
get id() {
|
|
26
|
+
return this._id;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Associated DataProducer id.
|
|
30
|
+
*/
|
|
31
|
+
get dataProducerId() {
|
|
32
|
+
return this._dataProducerId;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Whether the DataConsumer is closed.
|
|
36
|
+
*/
|
|
37
|
+
get closed() {
|
|
38
|
+
return this._closed;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* SCTP stream parameters.
|
|
42
|
+
*/
|
|
43
|
+
get sctpStreamParameters() {
|
|
44
|
+
return this._sctpStreamParameters;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* DataChannel readyState.
|
|
48
|
+
*/
|
|
49
|
+
get readyState() {
|
|
50
|
+
return this._dataChannel.readyState;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* DataChannel label.
|
|
54
|
+
*/
|
|
55
|
+
get label() {
|
|
56
|
+
return this._dataChannel.label;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* DataChannel protocol.
|
|
60
|
+
*/
|
|
61
|
+
get protocol() {
|
|
62
|
+
return this._dataChannel.protocol;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* DataChannel binaryType.
|
|
66
|
+
*/
|
|
67
|
+
get binaryType() {
|
|
68
|
+
return this._dataChannel.binaryType;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Set DataChannel binaryType.
|
|
72
|
+
*/
|
|
73
|
+
set binaryType(binaryType) {
|
|
74
|
+
this._dataChannel.binaryType = binaryType;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* App custom data.
|
|
78
|
+
*/
|
|
79
|
+
get appData() {
|
|
80
|
+
return this._appData;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* App custom data setter.
|
|
84
|
+
*/
|
|
85
|
+
set appData(appData) {
|
|
86
|
+
this._appData = appData;
|
|
87
|
+
}
|
|
88
|
+
get observer() {
|
|
89
|
+
return this._observer;
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Closes the DataConsumer.
|
|
93
|
+
*/
|
|
94
|
+
close() {
|
|
95
|
+
if (this._closed) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
logger.debug('close()');
|
|
99
|
+
this._closed = true;
|
|
100
|
+
this._dataChannel.close();
|
|
101
|
+
this.emit('@close');
|
|
102
|
+
// Emit observer event.
|
|
103
|
+
this._observer.safeEmit('close');
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Transport was closed.
|
|
107
|
+
*/
|
|
108
|
+
transportClosed() {
|
|
109
|
+
if (this._closed) {
|
|
110
|
+
return;
|
|
111
|
+
}
|
|
112
|
+
logger.debug('transportClosed()');
|
|
113
|
+
this._closed = true;
|
|
114
|
+
this._dataChannel.close();
|
|
115
|
+
this.safeEmit('transportclose');
|
|
116
|
+
// Emit observer event.
|
|
117
|
+
this._observer.safeEmit('close');
|
|
118
|
+
}
|
|
119
|
+
handleDataChannel() {
|
|
120
|
+
this._dataChannel.addEventListener('open', () => {
|
|
121
|
+
if (this._closed) {
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
logger.debug('DataChannel "open" event');
|
|
125
|
+
this.safeEmit('open');
|
|
126
|
+
});
|
|
127
|
+
this._dataChannel.addEventListener('error', (event) => {
|
|
128
|
+
if (this._closed) {
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
let { error } = event;
|
|
132
|
+
if (!error) {
|
|
133
|
+
error = new Error('unknown DataChannel error');
|
|
134
|
+
}
|
|
135
|
+
if (error.errorDetail === 'sctp-failure') {
|
|
136
|
+
logger.error('DataChannel SCTP error [sctpCauseCode:%s]: %s', error.sctpCauseCode, error.message);
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
logger.error('DataChannel "error" event: %o', error);
|
|
140
|
+
}
|
|
141
|
+
this.safeEmit('error', error);
|
|
142
|
+
});
|
|
143
|
+
this._dataChannel.addEventListener('close', () => {
|
|
144
|
+
if (this._closed) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
logger.warn('DataChannel "close" event');
|
|
148
|
+
this._closed = true;
|
|
149
|
+
this.emit('@close');
|
|
150
|
+
this.safeEmit('close');
|
|
151
|
+
// Emit observer event.
|
|
152
|
+
this._observer.safeEmit('close');
|
|
153
|
+
});
|
|
154
|
+
this._dataChannel.addEventListener('message', (event) => {
|
|
155
|
+
if (this._closed) {
|
|
156
|
+
return;
|
|
157
|
+
}
|
|
158
|
+
this.safeEmit('message', event.data);
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
exports.DataConsumer = DataConsumer;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { EnhancedEventEmitter } from './EnhancedEventEmitter';
|
|
2
|
+
import { SctpStreamParameters } from './SctpParameters';
|
|
3
|
+
import { AppData } from './types';
|
|
4
|
+
export type DataProducerOptions<DataProducerAppData extends AppData = AppData> = {
|
|
5
|
+
ordered?: boolean;
|
|
6
|
+
maxPacketLifeTime?: number;
|
|
7
|
+
maxRetransmits?: number;
|
|
8
|
+
label?: string;
|
|
9
|
+
protocol?: string;
|
|
10
|
+
appData?: DataProducerAppData;
|
|
11
|
+
};
|
|
12
|
+
export type DataProducerEvents = {
|
|
13
|
+
transportclose: [];
|
|
14
|
+
open: [];
|
|
15
|
+
error: [Error];
|
|
16
|
+
close: [];
|
|
17
|
+
bufferedamountlow: [];
|
|
18
|
+
'@close': [];
|
|
19
|
+
};
|
|
20
|
+
export type DataProducerObserverEvents = {
|
|
21
|
+
close: [];
|
|
22
|
+
};
|
|
23
|
+
export declare class DataProducer<DataProducerAppData extends AppData = AppData> extends EnhancedEventEmitter<DataProducerEvents> {
|
|
24
|
+
private readonly _id;
|
|
25
|
+
private readonly _dataChannel;
|
|
26
|
+
private _closed;
|
|
27
|
+
private readonly _sctpStreamParameters;
|
|
28
|
+
private _appData;
|
|
29
|
+
protected readonly _observer: EnhancedEventEmitter<DataProducerObserverEvents>;
|
|
30
|
+
constructor({ id, dataChannel, sctpStreamParameters, appData }: {
|
|
31
|
+
id: string;
|
|
32
|
+
dataChannel: RTCDataChannel;
|
|
33
|
+
sctpStreamParameters: SctpStreamParameters;
|
|
34
|
+
appData?: DataProducerAppData;
|
|
35
|
+
});
|
|
36
|
+
/**
|
|
37
|
+
* DataProducer id.
|
|
38
|
+
*/
|
|
39
|
+
get id(): string;
|
|
40
|
+
/**
|
|
41
|
+
* Whether the DataProducer is closed.
|
|
42
|
+
*/
|
|
43
|
+
get closed(): boolean;
|
|
44
|
+
/**
|
|
45
|
+
* SCTP stream parameters.
|
|
46
|
+
*/
|
|
47
|
+
get sctpStreamParameters(): SctpStreamParameters;
|
|
48
|
+
/**
|
|
49
|
+
* DataChannel readyState.
|
|
50
|
+
*/
|
|
51
|
+
get readyState(): RTCDataChannelState;
|
|
52
|
+
/**
|
|
53
|
+
* DataChannel label.
|
|
54
|
+
*/
|
|
55
|
+
get label(): string;
|
|
56
|
+
/**
|
|
57
|
+
* DataChannel protocol.
|
|
58
|
+
*/
|
|
59
|
+
get protocol(): string;
|
|
60
|
+
/**
|
|
61
|
+
* DataChannel bufferedAmount.
|
|
62
|
+
*/
|
|
63
|
+
get bufferedAmount(): number;
|
|
64
|
+
/**
|
|
65
|
+
* DataChannel bufferedAmountLowThreshold.
|
|
66
|
+
*/
|
|
67
|
+
get bufferedAmountLowThreshold(): number;
|
|
68
|
+
/**
|
|
69
|
+
* Set DataChannel bufferedAmountLowThreshold.
|
|
70
|
+
*/
|
|
71
|
+
set bufferedAmountLowThreshold(bufferedAmountLowThreshold: number);
|
|
72
|
+
/**
|
|
73
|
+
* App custom data.
|
|
74
|
+
*/
|
|
75
|
+
get appData(): DataProducerAppData;
|
|
76
|
+
/**
|
|
77
|
+
* App custom data setter.
|
|
78
|
+
*/
|
|
79
|
+
set appData(appData: DataProducerAppData);
|
|
80
|
+
get observer(): EnhancedEventEmitter;
|
|
81
|
+
/**
|
|
82
|
+
* Closes the DataProducer.
|
|
83
|
+
*/
|
|
84
|
+
close(): void;
|
|
85
|
+
/**
|
|
86
|
+
* Transport was closed.
|
|
87
|
+
*/
|
|
88
|
+
transportClosed(): void;
|
|
89
|
+
/**
|
|
90
|
+
* Send a message.
|
|
91
|
+
*
|
|
92
|
+
* @param {String|Blob|ArrayBuffer|ArrayBufferView} data.
|
|
93
|
+
*/
|
|
94
|
+
send(data: any): void;
|
|
95
|
+
private handleDataChannel;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=DataProducer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DataProducer.d.ts","sourceRoot":"","sources":["../src/DataProducer.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIlC,MAAM,MAAM,mBAAmB,CAAC,mBAAmB,SAAS,OAAO,GAAG,OAAO,IAC7E;IACC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,mBAAmB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAC9B;IACC,cAAc,EAAE,EAAE,CAAC;IACnB,IAAI,EAAE,EAAE,CAAC;IACT,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC;IACf,KAAK,EAAE,EAAE,CAAC;IACV,iBAAiB,EAAE,EAAE,CAAC;IAEtB,QAAQ,EAAE,EAAE,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,0BAA0B,GACtC;IACC,KAAK,EAAE,EAAE,CAAC;CACV,CAAC;AAEF,qBAAa,YAAY,CAAC,mBAAmB,SAAS,OAAO,GAAG,OAAO,CACtE,SAAQ,oBAAoB,CAAC,kBAAkB,CAAC;IAGhD,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAE7B,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAiB;IAE9C,OAAO,CAAC,OAAO,CAAS;IAExB,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAuB;IAE7D,OAAO,CAAC,QAAQ,CAAsB;IAEtC,SAAS,CAAC,QAAQ,CAAC,SAAS,mDAA0D;gBAGrF,EACC,EAAE,EACF,WAAW,EACX,oBAAoB,EACpB,OAAO,EACP,EACD;QACC,EAAE,EAAE,MAAM,CAAC;QACX,WAAW,EAAE,cAAc,CAAC;QAC5B,oBAAoB,EAAE,oBAAoB,CAAC;QAC3C,OAAO,CAAC,EAAE,mBAAmB,CAAC;KAC9B;IAeF;;OAEG;IACH,IAAI,EAAE,IAAI,MAAM,CAGf;IAED;;OAEG;IACH,IAAI,MAAM,IAAI,OAAO,CAGpB;IAED;;OAEG;IACH,IAAI,oBAAoB,IAAI,oBAAoB,CAG/C;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,mBAAmB,CAGpC;IAED;;OAEG;IACH,IAAI,KAAK,IAAI,MAAM,CAGlB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,MAAM,CAGrB;IAED;;OAEG;IACH,IAAI,cAAc,IAAI,MAAM,CAG3B;IAED;;OAEG;IACH,IAAI,0BAA0B,IAAI,MAAM,CAGvC;IAED;;OAEG;IACH,IAAI,0BAA0B,CAAC,0BAA0B,EAAE,MAAM,EAGhE;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,mBAAmB,CAGjC;IAED;;OAEG;IACH,IAAI,OAAO,CAAC,OAAO,EAAE,mBAAmB,EAGvC;IAED,IAAI,QAAQ,IAAI,oBAAoB,CAGnC;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAmBb;;OAEG;IACH,eAAe,IAAI,IAAI;IAmBvB;;;;OAIG;IACH,IAAI,CAAC,IAAI,EAAE,GAAG,GAAG,IAAI;IAYrB,OAAO,CAAC,iBAAiB;CAiFzB"}
|