subscribeStream method

Future<void> subscribeStream(
  1. dynamic dispatchEvent(
    1. Event event,
    2. Map<String, dynamic> params
    ),
  2. bool video,
  3. bool audio,
  4. bool speakerphone,
)

Implementation

Future<void> subscribeStream(
  Function(Event event, Map<String, dynamic> params) dispatchEvent,
  bool video,
  bool audio,
  bool speakerphone,
) async {
  final connection = await peerConnection;

  connection.onAddStream = (stream) {
    this.stream = stream;
    enableVideo(video);
    enableAudio(audio);
    enableSpeakerphone(speakerphone);
    dispatchEvent(Event.addStream, {"id": id, "stream": stream});
  };

  connection.onRemoveStream = (stream) {
    this.stream = stream;
    dispatchEvent(Event.removeStream, {"id": id, "stream": stream});
  };

  final offer = await connection.createOffer(constraints);
  connection.setLocalDescription(offer);

  var result = await rpc.send(
    "receiveVideoFrom",
    params: {'sender': id, 'sdpOffer': offer.sdp},
    hasResult: true,
  );

  final answer = RTCSessionDescription(result['sdpAnswer'], 'answer');
  await connection.setRemoteDescription(answer);
}