@@ -8,16 +8,18 @@ import 'package:dart_webrtc/dart_webrtc.dart';
8
8
import 'package:js/js_util.dart' ;
9
9
import 'package:platform_detect/platform_detect.dart' ;
10
10
import 'package:web/web.dart' as web;
11
- import 'package:webrtc_interface/webrtc_interface.dart' ;
12
11
13
- import 'media_stream_impl.dart' ;
14
12
import 'media_stream_track_impl.dart' ;
15
13
import 'rtc_data_channel_impl.dart' ;
16
14
import 'rtc_dtmf_sender_impl.dart' ;
17
15
import 'rtc_rtp_receiver_impl.dart' ;
18
16
import 'rtc_rtp_sender_impl.dart' ;
19
17
import 'rtc_rtp_transceiver_impl.dart' ;
20
18
19
+ extension on web.RTCDataChannelInit {
20
+ external set binaryType (String value);
21
+ }
22
+
21
23
/*
22
24
* PeerConnection
23
25
*/
@@ -395,21 +397,29 @@ class RTCPeerConnectionWeb extends RTCPeerConnection {
395
397
@override
396
398
Future <RTCDataChannel > createDataChannel (
397
399
String label, RTCDataChannelInit dataChannelDict) {
398
- final map = dataChannelDict.toMap ();
400
+ var dcInit = web.RTCDataChannelInit (
401
+ id: dataChannelDict.id,
402
+ ordered: dataChannelDict.ordered,
403
+ protocol: dataChannelDict.protocol,
404
+ negotiated: dataChannelDict.negotiated,
405
+ );
406
+
399
407
if (dataChannelDict.binaryType == 'binary' ) {
400
- map['binaryType' ] = 'arraybuffer' ; // Avoid Blob in data channel
408
+ dcInit.binaryType = 'arraybuffer' ; // Avoid Blob in data channel
409
+ }
410
+
411
+ if (dataChannelDict.maxRetransmits > 0 ) {
412
+ dcInit.maxRetransmits = dataChannelDict.maxRetransmits;
413
+ }
414
+
415
+ if (dataChannelDict.maxRetransmitTime > 0 ) {
416
+ dcInit.maxPacketLifeTime = dataChannelDict.maxRetransmitTime;
401
417
}
402
418
403
419
final jsDc = _jsPc.createDataChannel (
404
- label,
405
- web.RTCDataChannelInit (
406
- id: map['id' ],
407
- ordered: map['ordered' ],
408
- maxPacketLifeTime: map['maxPacketLifeTime' ],
409
- maxRetransmits: map['maxRetransmits' ],
410
- protocol: map['protocol' ],
411
- negotiated: map['negotiated' ],
412
- ));
420
+ label,
421
+ dcInit,
422
+ );
413
423
414
424
return Future .value (RTCDataChannelWeb (jsDc));
415
425
}
0 commit comments