mediasoup-client 3.19.0 → 3.21.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/lib/Consumer.d.ts.map +1 -1
- package/lib/Consumer.js +3 -0
- package/lib/DataConsumer.d.ts.map +1 -1
- package/lib/DataConsumer.js +8 -1
- package/lib/DataProducer.d.ts.map +1 -1
- package/lib/DataProducer.js +8 -1
- package/lib/Device.d.ts +0 -8
- package/lib/Device.d.ts.map +1 -1
- package/lib/Device.js +36 -21
- package/lib/Logger.d.ts +1 -0
- package/lib/Logger.d.ts.map +1 -1
- package/lib/Logger.js +4 -1
- package/lib/Producer.d.ts.map +1 -1
- package/lib/Producer.js +3 -0
- package/lib/SctpParameters.d.ts +9 -22
- package/lib/SctpParameters.d.ts.map +1 -1
- package/lib/Transport.d.ts +2 -1
- package/lib/Transport.d.ts.map +1 -1
- package/lib/Transport.js +88 -25
- package/lib/handlers/Chrome111.d.ts +2 -0
- package/lib/handlers/Chrome111.d.ts.map +1 -1
- package/lib/handlers/Chrome111.js +51 -14
- package/lib/handlers/Chrome74.d.ts +2 -0
- package/lib/handlers/Chrome74.d.ts.map +1 -1
- package/lib/handlers/Chrome74.js +51 -14
- package/lib/handlers/FakeHandler.d.ts +1 -2
- package/lib/handlers/FakeHandler.d.ts.map +1 -1
- package/lib/handlers/FakeHandler.js +38 -6
- package/lib/handlers/Firefox120.d.ts +2 -0
- package/lib/handlers/Firefox120.d.ts.map +1 -1
- package/lib/handlers/Firefox120.js +51 -14
- package/lib/handlers/HandlerInterface.d.ts +3 -3
- package/lib/handlers/HandlerInterface.d.ts.map +1 -1
- package/lib/handlers/ReactNative106.d.ts +2 -0
- package/lib/handlers/ReactNative106.d.ts.map +1 -1
- package/lib/handlers/ReactNative106.js +51 -14
- package/lib/handlers/Safari12.d.ts +2 -0
- package/lib/handlers/Safari12.d.ts.map +1 -1
- package/lib/handlers/Safari12.js +51 -14
- package/lib/handlers/sdp/{MediaSection.d.ts → RemoteMediaSection.d.ts} +4 -4
- package/lib/handlers/sdp/RemoteMediaSection.d.ts.map +1 -0
- package/lib/handlers/sdp/{MediaSection.js → RemoteMediaSection.js} +47 -12
- package/lib/handlers/sdp/RemoteSdp.d.ts.map +1 -1
- package/lib/handlers/sdp/RemoteSdp.js +41 -8
- package/lib/handlers/sdp/commonUtils.js +34 -1
- package/lib/index.d.ts +1 -1
- package/lib/index.js +42 -6
- package/lib/ortc.d.ts +1 -6
- package/lib/ortc.d.ts.map +1 -1
- package/lib/ortc.js +35 -34
- package/lib/test/fakeParameters.d.ts +0 -1
- package/lib/test/fakeParameters.d.ts.map +1 -1
- package/lib/test/fakeParameters.js +36 -10
- package/lib/test/test.js +36 -9
- package/npm-scripts.mjs +20 -11
- package/package.json +13 -13
- package/lib/handlers/sdp/MediaSection.d.ts.map +0 -1
package/lib/Transport.js
CHANGED
|
@@ -1,12 +1,45 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
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);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.Transport = void 0;
|
|
4
37
|
const awaitqueue_1 = require("awaitqueue");
|
|
5
38
|
const Logger_1 = require("./Logger");
|
|
6
39
|
const enhancedEvents_1 = require("./enhancedEvents");
|
|
7
40
|
const errors_1 = require("./errors");
|
|
8
|
-
const utils = require("./utils");
|
|
9
|
-
const ortc = require("./ortc");
|
|
41
|
+
const utils = __importStar(require("./utils"));
|
|
42
|
+
const ortc = __importStar(require("./ortc"));
|
|
10
43
|
const Producer_1 = require("./Producer");
|
|
11
44
|
const Consumer_1 = require("./Consumer");
|
|
12
45
|
const DataProducer_1 = require("./DataProducer");
|
|
@@ -40,8 +73,8 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
40
73
|
// Whether we can produce audio/video based on computed extended RTP
|
|
41
74
|
// capabilities.
|
|
42
75
|
_canProduceByKind;
|
|
43
|
-
// SCTP
|
|
44
|
-
|
|
76
|
+
// SCTP parameters of the mediasoup transport.
|
|
77
|
+
_sctpParameters;
|
|
45
78
|
// RTC handler isntance.
|
|
46
79
|
_handler;
|
|
47
80
|
// Transport ICE gathering state.
|
|
@@ -88,7 +121,17 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
88
121
|
this._getSendExtendedRtpCapabilities = getSendExtendedRtpCapabilities;
|
|
89
122
|
this._recvRtpCapabilities = recvRtpCapabilities;
|
|
90
123
|
this._canProduceByKind = canProduceByKind;
|
|
91
|
-
|
|
124
|
+
// NOTE: Let's clone received SctpParameters and adapt them to be backwards
|
|
125
|
+
// compatible with old mediasoup server versions.
|
|
126
|
+
this._sctpParameters = utils.clone(sctpParameters);
|
|
127
|
+
if (this._sctpParameters) {
|
|
128
|
+
this._sctpParameters.maxSendMessageSize =
|
|
129
|
+
this._sctpParameters.maxSendMessageSize ??
|
|
130
|
+
this._sctpParameters.maxMessageSize;
|
|
131
|
+
this._sctpParameters.maxReceiveMessageSize =
|
|
132
|
+
this._sctpParameters.maxReceiveMessageSize ??
|
|
133
|
+
this._sctpParameters.maxMessageSize;
|
|
134
|
+
}
|
|
92
135
|
// Clone and sanitize additionalSettings.
|
|
93
136
|
const clonedAdditionalSettings = utils.clone(additionalSettings) ?? {};
|
|
94
137
|
delete clonedAdditionalSettings.iceServers;
|
|
@@ -100,7 +143,7 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
100
143
|
iceParameters,
|
|
101
144
|
iceCandidates,
|
|
102
145
|
dtlsParameters,
|
|
103
|
-
sctpParameters,
|
|
146
|
+
sctpParameters: this._sctpParameters,
|
|
104
147
|
iceServers,
|
|
105
148
|
iceTransportPolicy,
|
|
106
149
|
additionalSettings: clonedAdditionalSettings,
|
|
@@ -225,7 +268,9 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
225
268
|
throw new TypeError('missing iceParameters');
|
|
226
269
|
}
|
|
227
270
|
// Enqueue command.
|
|
228
|
-
|
|
271
|
+
await this._awaitQueue.push(async () => {
|
|
272
|
+
await this._handler.restartIce(iceParameters);
|
|
273
|
+
}, 'transport.restartIce()');
|
|
229
274
|
}
|
|
230
275
|
/**
|
|
231
276
|
* Update ICE servers.
|
|
@@ -239,7 +284,9 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
239
284
|
throw new TypeError('missing iceServers');
|
|
240
285
|
}
|
|
241
286
|
// Enqueue command.
|
|
242
|
-
|
|
287
|
+
await this._awaitQueue.push(async () => {
|
|
288
|
+
await this._handler.updateIceServers(iceServers);
|
|
289
|
+
}, 'transport.updateIceServers()');
|
|
243
290
|
}
|
|
244
291
|
/**
|
|
245
292
|
* Create a Producer.
|
|
@@ -253,7 +300,7 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
253
300
|
throw new TypeError('missing track');
|
|
254
301
|
}
|
|
255
302
|
else if (this._direction !== 'send') {
|
|
256
|
-
throw new errors_1.UnsupportedError('not a sending
|
|
303
|
+
throw new errors_1.UnsupportedError('not a sending transport');
|
|
257
304
|
}
|
|
258
305
|
else if (!this._canProduceByKind[track.kind]) {
|
|
259
306
|
throw new errors_1.UnsupportedError(`cannot produce ${track.kind}`);
|
|
@@ -379,7 +426,7 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
379
426
|
throw new errors_1.InvalidStateError('closed');
|
|
380
427
|
}
|
|
381
428
|
else if (this._direction !== 'recv') {
|
|
382
|
-
throw new errors_1.UnsupportedError('not a receiving
|
|
429
|
+
throw new errors_1.UnsupportedError('not a receiving transport');
|
|
383
430
|
}
|
|
384
431
|
else if (typeof id !== 'string') {
|
|
385
432
|
throw new TypeError('missing id');
|
|
@@ -435,10 +482,10 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
435
482
|
throw new errors_1.InvalidStateError('closed');
|
|
436
483
|
}
|
|
437
484
|
else if (this._direction !== 'send') {
|
|
438
|
-
throw new errors_1.UnsupportedError('not a sending
|
|
485
|
+
throw new errors_1.UnsupportedError('not a sending transport');
|
|
439
486
|
}
|
|
440
|
-
else if (!this.
|
|
441
|
-
throw new errors_1.UnsupportedError('SCTP not enabled by remote
|
|
487
|
+
else if (!this._sctpParameters) {
|
|
488
|
+
throw new errors_1.UnsupportedError('SCTP not enabled by remote transport');
|
|
442
489
|
}
|
|
443
490
|
else if (this.listenerCount('connect') === 0 &&
|
|
444
491
|
this._connectionState === 'new') {
|
|
@@ -496,10 +543,10 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
496
543
|
throw new errors_1.InvalidStateError('closed');
|
|
497
544
|
}
|
|
498
545
|
else if (this._direction !== 'recv') {
|
|
499
|
-
throw new errors_1.UnsupportedError('not a receiving
|
|
546
|
+
throw new errors_1.UnsupportedError('not a receiving transport');
|
|
500
547
|
}
|
|
501
|
-
else if (!this.
|
|
502
|
-
throw new errors_1.UnsupportedError('SCTP not enabled by remote
|
|
548
|
+
else if (!this._sctpParameters) {
|
|
549
|
+
throw new errors_1.UnsupportedError('SCTP not enabled by remote transport');
|
|
503
550
|
}
|
|
504
551
|
else if (typeof id !== 'string') {
|
|
505
552
|
throw new TypeError('missing id');
|
|
@@ -521,7 +568,8 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
521
568
|
// Enqueue command.
|
|
522
569
|
return this._awaitQueue.push(async () => {
|
|
523
570
|
const { dataChannel } = await this._handler.receiveDataChannel({
|
|
524
|
-
|
|
571
|
+
// NOTE: Mirror it.
|
|
572
|
+
maxMessageSize: this._sctpParameters?.maxSendMessageSize,
|
|
525
573
|
sctpStreamParameters: clonedSctpStreamParameters,
|
|
526
574
|
label,
|
|
527
575
|
protocol,
|
|
@@ -540,6 +588,9 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
540
588
|
return dataConsumer;
|
|
541
589
|
}, 'transport.consumeData()');
|
|
542
590
|
}
|
|
591
|
+
getDataChannelMaxMessageSize() {
|
|
592
|
+
return this._handler.getDataChannelMaxMessageSize();
|
|
593
|
+
}
|
|
543
594
|
// This method is guaranteed to never throw.
|
|
544
595
|
createPendingConsumers() {
|
|
545
596
|
this._consumerCreationInProgress = true;
|
|
@@ -736,7 +787,7 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
736
787
|
}
|
|
737
788
|
});
|
|
738
789
|
handler.on('@icecandidateerror', (event) => {
|
|
739
|
-
logger.
|
|
790
|
+
logger.debug(`ICE candidate error [url:${event.url}, localAddress:${event.address}, localPort:${event.port}]: ${event.errorCode} "${event.errorText}"`);
|
|
740
791
|
this.safeEmit('icecandidateerror', event);
|
|
741
792
|
});
|
|
742
793
|
handler.on('@connectionstatechange', (connectionState) => {
|
|
@@ -757,36 +808,48 @@ class Transport extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
757
808
|
return;
|
|
758
809
|
}
|
|
759
810
|
this._awaitQueue
|
|
760
|
-
.push(async () =>
|
|
761
|
-
|
|
811
|
+
.push(async () => {
|
|
812
|
+
await this._handler.stopSending(producer.localId);
|
|
813
|
+
}, 'producer @close event')
|
|
814
|
+
.catch((error) => logger.warn('producer closure failed:%o', error));
|
|
762
815
|
});
|
|
763
816
|
producer.on('@pause', (callback, errback) => {
|
|
764
817
|
this._awaitQueue
|
|
765
|
-
.push(async () =>
|
|
818
|
+
.push(async () => {
|
|
819
|
+
await this._handler.pauseSending(producer.localId);
|
|
820
|
+
}, 'producer @pause event')
|
|
766
821
|
.then(callback)
|
|
767
822
|
.catch(errback);
|
|
768
823
|
});
|
|
769
824
|
producer.on('@resume', (callback, errback) => {
|
|
770
825
|
this._awaitQueue
|
|
771
|
-
.push(async () =>
|
|
826
|
+
.push(async () => {
|
|
827
|
+
await this._handler.resumeSending(producer.localId);
|
|
828
|
+
}, 'producer @resume event')
|
|
772
829
|
.then(callback)
|
|
773
830
|
.catch(errback);
|
|
774
831
|
});
|
|
775
832
|
producer.on('@replacetrack', (track, callback, errback) => {
|
|
776
833
|
this._awaitQueue
|
|
777
|
-
.push(async () =>
|
|
834
|
+
.push(async () => {
|
|
835
|
+
await this._handler.replaceTrack(producer.localId, track);
|
|
836
|
+
}, 'producer @replacetrack event')
|
|
778
837
|
.then(callback)
|
|
779
838
|
.catch(errback);
|
|
780
839
|
});
|
|
781
840
|
producer.on('@setmaxspatiallayer', (spatialLayer, callback, errback) => {
|
|
782
841
|
this._awaitQueue
|
|
783
|
-
.push(async () =>
|
|
842
|
+
.push(async () => {
|
|
843
|
+
await this._handler.setMaxSpatialLayer(producer.localId, spatialLayer);
|
|
844
|
+
}, 'producer @setmaxspatiallayer event')
|
|
784
845
|
.then(callback)
|
|
785
846
|
.catch(errback);
|
|
786
847
|
});
|
|
787
848
|
producer.on('@setrtpencodingparameters', (params, callback, errback) => {
|
|
788
849
|
this._awaitQueue
|
|
789
|
-
.push(async () =>
|
|
850
|
+
.push(async () => {
|
|
851
|
+
await this._handler.setRtpEncodingParameters(producer.localId, params);
|
|
852
|
+
}, 'producer @setrtpencodingparameters event')
|
|
790
853
|
.then(callback)
|
|
791
854
|
.catch(errback);
|
|
792
855
|
});
|
|
@@ -4,6 +4,7 @@ import type { HandlerFactory, HandlerInterface, HandlerEvents, HandlerSendOption
|
|
|
4
4
|
export declare class Chrome111 extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
|
|
5
5
|
private _closed;
|
|
6
6
|
private _direction;
|
|
7
|
+
private _sctpMaxReceiveMessageSize?;
|
|
7
8
|
private _remoteSdp;
|
|
8
9
|
private _getSendExtendedRtpCapabilities;
|
|
9
10
|
private _forcedLocalDtlsRole?;
|
|
@@ -39,6 +40,7 @@ export declare class Chrome111 extends EnhancedEventEmitter<HandlerEvents> imple
|
|
|
39
40
|
resumeReceiving(localIds: string[]): Promise<void>;
|
|
40
41
|
getReceiverStats(localId: string): Promise<RTCStatsReport>;
|
|
41
42
|
receiveDataChannel({ maxMessageSize, sctpStreamParameters, label, protocol, }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
|
|
43
|
+
getDataChannelMaxMessageSize(): number | undefined;
|
|
42
44
|
private setupTransport;
|
|
43
45
|
private onIceGatheringStateChange;
|
|
44
46
|
private onIceCandidateError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chrome111.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome111.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAKzD,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,cAAc,CAAC;AAa5D,OAAO,KAAK,EACX,cAAc,EACd,gBAAgB,EAChB,aAAa,EAGb,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"Chrome111.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome111.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,24 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
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);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.Chrome111 = void 0;
|
|
4
|
-
const sdpTransform = require("sdp-transform");
|
|
37
|
+
const sdpTransform = __importStar(require("sdp-transform"));
|
|
5
38
|
const enhancedEvents_1 = require("../enhancedEvents");
|
|
6
39
|
const Logger_1 = require("../Logger");
|
|
7
|
-
const ortc = require("../ortc");
|
|
40
|
+
const ortc = __importStar(require("../ortc"));
|
|
8
41
|
const errors_1 = require("../errors");
|
|
9
42
|
const scalabilityModes_1 = require("../scalabilityModes");
|
|
10
43
|
const RemoteSdp_1 = require("./sdp/RemoteSdp");
|
|
11
|
-
const sdpCommonUtils = require("./sdp/commonUtils");
|
|
12
|
-
const sdpUnifiedPlanUtils = require("./sdp/unifiedPlanUtils");
|
|
13
|
-
const ortcUtils = require("./ortc/utils");
|
|
44
|
+
const sdpCommonUtils = __importStar(require("./sdp/commonUtils"));
|
|
45
|
+
const sdpUnifiedPlanUtils = __importStar(require("./sdp/unifiedPlanUtils"));
|
|
46
|
+
const ortcUtils = __importStar(require("./ortc/utils"));
|
|
14
47
|
const logger = new Logger_1.Logger('Chrome111');
|
|
15
48
|
const NAME = 'Chrome111';
|
|
16
|
-
const SCTP_NUM_STREAMS = { OS: 65535, MIS: 65535 };
|
|
17
49
|
class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
18
50
|
// Closed flag.
|
|
19
51
|
_closed = false;
|
|
20
52
|
// Handler direction.
|
|
21
53
|
_direction;
|
|
54
|
+
// DataChannel max receive message size.
|
|
55
|
+
_sctpMaxReceiveMessageSize;
|
|
22
56
|
// Remote SDP handler.
|
|
23
57
|
_remoteSdp;
|
|
24
58
|
// Callback to request sending extended RTP capabilities on demand.
|
|
@@ -81,12 +115,6 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
81
115
|
throw error;
|
|
82
116
|
}
|
|
83
117
|
},
|
|
84
|
-
getNativeSctpCapabilities: async () => {
|
|
85
|
-
logger.debug('getNativeSctpCapabilities()');
|
|
86
|
-
return {
|
|
87
|
-
numStreams: SCTP_NUM_STREAMS,
|
|
88
|
-
};
|
|
89
|
-
},
|
|
90
118
|
};
|
|
91
119
|
}
|
|
92
120
|
static getLocalRtpCapabilities(localSdpObject, extraHeaderExtensions = []) {
|
|
@@ -106,6 +134,8 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
106
134
|
super();
|
|
107
135
|
logger.debug('constructor()');
|
|
108
136
|
this._direction = direction;
|
|
137
|
+
// NOTE: Mirror it.
|
|
138
|
+
this._sctpMaxReceiveMessageSize = sctpParameters?.maxSendMessageSize;
|
|
109
139
|
this._remoteSdp = new RemoteSdp_1.RemoteSdp({
|
|
110
140
|
iceParameters,
|
|
111
141
|
iceCandidates,
|
|
@@ -490,7 +520,7 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
490
520
|
const dataChannel = this._pc.createDataChannel(sctpStreamParameters.label, options);
|
|
491
521
|
// Increase next id.
|
|
492
522
|
this._nextSendSctpStreamId =
|
|
493
|
-
++this._nextSendSctpStreamId %
|
|
523
|
+
++this._nextSendSctpStreamId % (this._pc.sctp?.maxChannels ?? 65536);
|
|
494
524
|
// If this is the first DataChannel we need to create the SDP answer with
|
|
495
525
|
// m=application section.
|
|
496
526
|
if (!this._hasDataChannelMediaSection) {
|
|
@@ -714,7 +744,9 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
714
744
|
let answer = await this._pc.createAnswer();
|
|
715
745
|
const localSdpObject = sdpTransform.parse(answer.sdp);
|
|
716
746
|
const answerMediaObject = localSdpObject.media.find(m => m.type === 'application');
|
|
717
|
-
|
|
747
|
+
if (typeof maxMessageSize === 'number') {
|
|
748
|
+
answerMediaObject.maxMessageSize = maxMessageSize;
|
|
749
|
+
}
|
|
718
750
|
if (!this._transportReady) {
|
|
719
751
|
await this.setupTransport({
|
|
720
752
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
@@ -731,6 +763,11 @@ class Chrome111 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
731
763
|
}
|
|
732
764
|
return { dataChannel };
|
|
733
765
|
}
|
|
766
|
+
getDataChannelMaxMessageSize() {
|
|
767
|
+
return this._direction === 'send'
|
|
768
|
+
? this._pc.sctp?.maxMessageSize
|
|
769
|
+
: this._sctpMaxReceiveMessageSize;
|
|
770
|
+
}
|
|
734
771
|
async setupTransport({ localDtlsRole, localSdpObject, }) {
|
|
735
772
|
if (!localSdpObject) {
|
|
736
773
|
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
|
|
@@ -4,6 +4,7 @@ import type { HandlerFactory, HandlerEvents, HandlerInterface, HandlerSendOption
|
|
|
4
4
|
export declare class Chrome74 extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
|
|
5
5
|
private _closed;
|
|
6
6
|
private _direction;
|
|
7
|
+
private _sctpMaxReceiveMessageSize?;
|
|
7
8
|
private _remoteSdp;
|
|
8
9
|
private _getSendExtendedRtpCapabilities;
|
|
9
10
|
private _forcedLocalDtlsRole?;
|
|
@@ -39,6 +40,7 @@ export declare class Chrome74 extends EnhancedEventEmitter<HandlerEvents> implem
|
|
|
39
40
|
resumeReceiving(localIds: string[]): Promise<void>;
|
|
40
41
|
getReceiverStats(localId: string): Promise<RTCStatsReport>;
|
|
41
42
|
receiveDataChannel({ maxMessageSize, sctpStreamParameters, label, protocol, }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
|
|
43
|
+
getDataChannelMaxMessageSize(): number | undefined;
|
|
42
44
|
private setupTransport;
|
|
43
45
|
private onIceGatheringStateChange;
|
|
44
46
|
private onIceCandidateError;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Chrome74.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome74.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAIzD,OAAO,KAAK,EAAE,aAAa,EAAY,MAAM,cAAc,CAAC;AAc5D,OAAO,KAAK,EACX,cAAc,EACd,aAAa,EACb,gBAAgB,EAGhB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,oBAAoB,EACpB,6BAA6B,EAC7B,4BAA4B,EAC5B,gCAAgC,EAChC,+BAA+B,EAC/B,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"Chrome74.d.ts","sourceRoot":"","sources":["../../src/handlers/Chrome74.ts"],"names":[],"mappings":"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"}
|
package/lib/handlers/Chrome74.js
CHANGED
|
@@ -1,24 +1,58 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
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);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.Chrome74 = void 0;
|
|
4
|
-
const sdpTransform = require("sdp-transform");
|
|
37
|
+
const sdpTransform = __importStar(require("sdp-transform"));
|
|
5
38
|
const Logger_1 = require("../Logger");
|
|
6
39
|
const enhancedEvents_1 = require("../enhancedEvents");
|
|
7
|
-
const ortc = require("../ortc");
|
|
40
|
+
const ortc = __importStar(require("../ortc"));
|
|
8
41
|
const errors_1 = require("../errors");
|
|
9
42
|
const scalabilityModes_1 = require("../scalabilityModes");
|
|
10
43
|
const RemoteSdp_1 = require("./sdp/RemoteSdp");
|
|
11
|
-
const sdpCommonUtils = require("./sdp/commonUtils");
|
|
12
|
-
const sdpUnifiedPlanUtils = require("./sdp/unifiedPlanUtils");
|
|
13
|
-
const ortcUtils = require("./ortc/utils");
|
|
44
|
+
const sdpCommonUtils = __importStar(require("./sdp/commonUtils"));
|
|
45
|
+
const sdpUnifiedPlanUtils = __importStar(require("./sdp/unifiedPlanUtils"));
|
|
46
|
+
const ortcUtils = __importStar(require("./ortc/utils"));
|
|
14
47
|
const logger = new Logger_1.Logger('Chrome74');
|
|
15
48
|
const NAME = 'Chrome74';
|
|
16
|
-
const SCTP_NUM_STREAMS = { OS: 1024, MIS: 1024 };
|
|
17
49
|
class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
18
50
|
// Closed flag.
|
|
19
51
|
_closed = false;
|
|
20
52
|
// Handler direction.
|
|
21
53
|
_direction;
|
|
54
|
+
// DataChannel max receive message size.
|
|
55
|
+
_sctpMaxReceiveMessageSize;
|
|
22
56
|
// Remote SDP handler.
|
|
23
57
|
_remoteSdp;
|
|
24
58
|
// Callback to request sending extended RTP capabilities on demand.
|
|
@@ -76,12 +110,6 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
76
110
|
throw error;
|
|
77
111
|
}
|
|
78
112
|
},
|
|
79
|
-
getNativeSctpCapabilities: async () => {
|
|
80
|
-
logger.debug('getNativeSctpCapabilities()');
|
|
81
|
-
return {
|
|
82
|
-
numStreams: SCTP_NUM_STREAMS,
|
|
83
|
-
};
|
|
84
|
-
},
|
|
85
113
|
};
|
|
86
114
|
}
|
|
87
115
|
static getLocalRtpCapabilities(localSdpObject, extraHeaderExtensions = []) {
|
|
@@ -101,6 +129,8 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
101
129
|
super();
|
|
102
130
|
logger.debug('constructor()');
|
|
103
131
|
this._direction = direction;
|
|
132
|
+
// NOTE: Mirror it.
|
|
133
|
+
this._sctpMaxReceiveMessageSize = sctpParameters?.maxSendMessageSize;
|
|
104
134
|
this._remoteSdp = new RemoteSdp_1.RemoteSdp({
|
|
105
135
|
iceParameters,
|
|
106
136
|
iceCandidates,
|
|
@@ -505,7 +535,7 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
505
535
|
const dataChannel = this._pc.createDataChannel(sctpStreamParameters.label, options);
|
|
506
536
|
// Increase next id.
|
|
507
537
|
this._nextSendSctpStreamId =
|
|
508
|
-
++this._nextSendSctpStreamId %
|
|
538
|
+
++this._nextSendSctpStreamId % (this._pc.sctp?.maxChannels ?? 65536);
|
|
509
539
|
// If this is the first DataChannel we need to create the SDP answer with
|
|
510
540
|
// m=application section.
|
|
511
541
|
if (!this._hasDataChannelMediaSection) {
|
|
@@ -716,7 +746,9 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
716
746
|
let answer = await this._pc.createAnswer();
|
|
717
747
|
const localSdpObject = sdpTransform.parse(answer.sdp);
|
|
718
748
|
const answerMediaObject = localSdpObject.media.find(m => m.type === 'application');
|
|
719
|
-
|
|
749
|
+
if (typeof maxMessageSize === 'number') {
|
|
750
|
+
answerMediaObject.maxMessageSize = maxMessageSize;
|
|
751
|
+
}
|
|
720
752
|
if (!this._transportReady) {
|
|
721
753
|
await this.setupTransport({
|
|
722
754
|
localDtlsRole: this._forcedLocalDtlsRole ?? 'client',
|
|
@@ -733,6 +765,11 @@ class Chrome74 extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
733
765
|
}
|
|
734
766
|
return { dataChannel };
|
|
735
767
|
}
|
|
768
|
+
getDataChannelMaxMessageSize() {
|
|
769
|
+
return this._direction === 'send'
|
|
770
|
+
? this._pc.sctp?.maxMessageSize
|
|
771
|
+
: this._sctpMaxReceiveMessageSize;
|
|
772
|
+
}
|
|
736
773
|
async setupTransport({ localDtlsRole, localSdpObject, }) {
|
|
737
774
|
if (!localSdpObject) {
|
|
738
775
|
localSdpObject = sdpTransform.parse(this._pc.localDescription.sdp);
|
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
import { EnhancedEventEmitter } from '../enhancedEvents';
|
|
2
2
|
import type { IceParameters, DtlsParameters, IceGatheringState, ConnectionState } from '../Transport';
|
|
3
3
|
import type { RtpCapabilities } from '../RtpParameters';
|
|
4
|
-
import type { SctpCapabilities } from '../SctpParameters';
|
|
5
4
|
import type { HandlerFactory, HandlerInterface, HandlerEvents, HandlerSendOptions, HandlerSendResult, HandlerReceiveOptions, HandlerReceiveResult, HandlerSendDataChannelOptions, HandlerSendDataChannelResult, HandlerReceiveDataChannelOptions, HandlerReceiveDataChannelResult } from './HandlerInterface';
|
|
6
5
|
export type FakeParameters = {
|
|
7
6
|
generateNativeRtpCapabilities: () => RtpCapabilities;
|
|
8
|
-
generateNativeSctpCapabilities: () => SctpCapabilities;
|
|
9
7
|
generateLocalDtlsParameters: () => DtlsParameters;
|
|
10
8
|
};
|
|
11
9
|
export declare class FakeHandler extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
|
|
@@ -46,6 +44,7 @@ export declare class FakeHandler extends EnhancedEventEmitter<HandlerEvents> imp
|
|
|
46
44
|
resumeReceiving(localIds: string[]): Promise<void>;
|
|
47
45
|
getReceiverStats(localId: string): Promise<RTCStatsReport>;
|
|
48
46
|
receiveDataChannel({ sctpStreamParameters, label, protocol, }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
|
|
47
|
+
getDataChannelMaxMessageSize(): number | undefined;
|
|
49
48
|
private setupTransport;
|
|
50
49
|
private assertNotClosed;
|
|
51
50
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FakeHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/FakeHandler.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAKzD,OAAO,KAAK,EACX,aAAa,EACb,cAAc,EAEd,iBAAiB,EACjB,eAAe,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EACX,eAAe,EAIf,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"FakeHandler.d.ts","sourceRoot":"","sources":["../../src/handlers/FakeHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,11 +1,44 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
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);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
2
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
36
|
exports.FakeHandler = void 0;
|
|
4
37
|
const fake_mediastreamtrack_1 = require("fake-mediastreamtrack");
|
|
5
38
|
const enhancedEvents_1 = require("../enhancedEvents");
|
|
6
39
|
const Logger_1 = require("../Logger");
|
|
7
|
-
const utils = require("../utils");
|
|
8
|
-
const ortc = require("../ortc");
|
|
40
|
+
const utils = __importStar(require("../utils"));
|
|
41
|
+
const ortc = __importStar(require("../ortc"));
|
|
9
42
|
const errors_1 = require("../errors");
|
|
10
43
|
const FakeEventTarget_1 = require("./fakeEvents/FakeEventTarget");
|
|
11
44
|
const logger = new Logger_1.Logger('FakeHandler');
|
|
@@ -40,10 +73,6 @@ class FakeHandler extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
40
73
|
logger.debug('getNativeRtpCapabilities() [direction:%o]', direction);
|
|
41
74
|
return FakeHandler.getLocalRtpCapabilities(fakeParameters);
|
|
42
75
|
},
|
|
43
|
-
getNativeSctpCapabilities: async () => {
|
|
44
|
-
logger.debug('getNativeSctpCapabilities()');
|
|
45
|
-
return fakeParameters.generateNativeSctpCapabilities();
|
|
46
|
-
},
|
|
47
76
|
};
|
|
48
77
|
}
|
|
49
78
|
static getLocalRtpCapabilities(fakeParameters) {
|
|
@@ -266,6 +295,9 @@ class FakeHandler extends enhancedEvents_1.EnhancedEventEmitter {
|
|
|
266
295
|
});
|
|
267
296
|
return { dataChannel };
|
|
268
297
|
}
|
|
298
|
+
getDataChannelMaxMessageSize() {
|
|
299
|
+
return 500000;
|
|
300
|
+
}
|
|
269
301
|
async setupTransport({ localDtlsRole,
|
|
270
302
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
271
303
|
localSdpObject, }) {
|
|
@@ -4,6 +4,7 @@ import type { HandlerFactory, HandlerInterface, HandlerEvents, HandlerSendOption
|
|
|
4
4
|
export declare class Firefox120 extends EnhancedEventEmitter<HandlerEvents> implements HandlerInterface {
|
|
5
5
|
private _closed;
|
|
6
6
|
private _direction;
|
|
7
|
+
private _sctpMaxReceiveMessageSize?;
|
|
7
8
|
private _remoteSdp;
|
|
8
9
|
private _getSendExtendedRtpCapabilities;
|
|
9
10
|
private _pc;
|
|
@@ -38,6 +39,7 @@ export declare class Firefox120 extends EnhancedEventEmitter<HandlerEvents> impl
|
|
|
38
39
|
resumeReceiving(localIds: string[]): Promise<void>;
|
|
39
40
|
getReceiverStats(localId: string): Promise<RTCStatsReport>;
|
|
40
41
|
receiveDataChannel({ maxMessageSize, sctpStreamParameters, label, protocol, }: HandlerReceiveDataChannelOptions): Promise<HandlerReceiveDataChannelResult>;
|
|
42
|
+
getDataChannelMaxMessageSize(): number | undefined;
|
|
41
43
|
private setupTransport;
|
|
42
44
|
private onIceGatheringStateChange;
|
|
43
45
|
private onIceCandidateError;
|