create static method

Future<Transport> create({
  1. required int role,
  2. required Signal signal,
  3. required Map<String, dynamic> config,
})

Implementation

static Future<Transport> create(
    {required int role,
    required Signal signal,
    required Map<String, dynamic> config}) async {
  var transport = Transport(signal);
  var pc = await createPeerConnection(config);

  transport.pc = pc;

  if (role == RolePub) {
    transport.api = await pc.createDataChannel(
        API_CHANNEL, RTCDataChannelInit()..maxRetransmits = 30);
  }

  pc.onIceCandidate = (candidate) {
    signal.trickle(Trickle(target: role, candidate: candidate));
  };

  pc.onIceConnectionState = (state) => {
        if (pc.iceConnectionState ==
            RTCIceConnectionState.RTCIceConnectionStateDisconnected)
          {
            /* TODO: implement pc.restartIce for flutter_webrtc.
            if (pc.restartIce) {
              // this will trigger onNegotiationNeeded
              pc.restartIce();
            }*/
          }
      };

  return transport;
}