createDataChannel method

  1. @override
Future<DataChannel> createDataChannel({
  1. required PeerConnection peerConnection,
  2. required String label,
  3. DataChannelInit? options,
})
override

Create a data channel

Implementation

@override
Future<DataChannel> createDataChannel({
  required PeerConnection peerConnection,
  required String label,
  DataChannelInit? options,
}) async {
  if (peerConnection is! MobilePeerConnection) {
    throw Exception('Invalid peer connection type');
  }

  final init = rtc.RTCDataChannelInit()..ordered = options?.ordered ?? true;
  final maxPacketLifeTime = options?.maxPacketLifeTime;
  if (maxPacketLifeTime != null) {
    init.maxRetransmitTime = maxPacketLifeTime;
  }
  final maxRetransmits = options?.maxRetransmits;
  if (maxRetransmits != null) {
    init.maxRetransmits = maxRetransmits;
  }

  final dc = await peerConnection.rtcConnection.createDataChannel(
    label,
    init,
  );
  return MobileDataChannel(dc);
}