Flutter WebRTC can't create datachannel

704 Views Asked by At

I'm trying to create WebRTC datachannel with flutter_webrtc package but have some Issues.

What I'm doing:

I'm creating RTCPeerConnection? _peerConnection;. I have working video and audio stream. But then I'm trying to add dataChannels.

On Offer side I do:

  _createDataChanel() async {
    final chanInit = RTCDataChannelInit()
      ..negotiated = true
      ..maxRetransmits = 30;

    _dataChannel = await _peerConnection!.createDataChannel('chat', chanInit);
    _dataChannel!.onMessage = (data) {
      print(data);
    };
  }

On Answer side I do:

  _subscribeDataChanel() {
    _peerConnection!.onDataChannel = (channel) {
      _dataChannel = channel;
      _dataChannel!.onMessage = (data) {
        print(data);
      };
    };
  }

And nothing happens. It will never send any events to onDataChannel. May be I do something wrong?

UPD: I made some experiments and figure how to solve.

Solution: We should firstly create DataChannel and then create Offer or Answer. So in code it will be something like:

Offer side:

createOffer(Connection connection) async {
    await _createDataChanel();

    final offerDesc = await _peerConnection!.createOffer(offerSdpConstraints);
    await _peerConnection!.setLocalDescription(offerDesc);
    // send to signaling server and so on...
}

Answer side:

createAnswer(Connection connection) async {
    _subscribeDataChanel();
    // get offer from signaling server and so on ...
}
0

There are 0 best solutions below