webRTCinit method

Future<void> webRTCinit({
  1. bool restoresystem = false,
})

Implementation

Future<void> webRTCinit({bool restoresystem = false}) async {
  if (restoresystem) {
    // Önce eski bağlantıyı temizle
    await peerConnection?.close();
    peerConnection = null;

    await localStream?.dispose();
    localStream = null;
  }

  await localRenderer.value.initialize();
  await remoteRenderer.value.initialize();

  localStream = await webrtc.navigator.mediaDevices.getUserMedia({
    "audio": true,
    "video": true,
  });

  // Akışı bir renderer ile yerel videoda göster
  localRenderer.value.srcObject = localStream;

  peerConnection = await webrtc.createPeerConnection({
    "iceServers": [
      {"urls": "stun:stun.l.google.com:19302"}
    ]
  });

  localStream!.getTracks().forEach((track) {
    peerConnection!.addTrack(track, localStream!);
  });

  peerConnection!.onIceCandidate = (candidate) {
    sendCandidate(candidate.toMap());
  };

  peerConnection!.onTrack = (event) {
    WidgetsBinding.instance.addPostFrameCallback((_) {
      if (event.track.kind == 'audio') {
        log('Gelen ses verisi: ${event.streams[0]}');
      }

      if (event.track.kind == 'video') {
        remoteStream = event.streams[0];
        remoteRenderer.value.srcObject = remoteStream;
      }
    });

    log('//**//');
  };

  peerConnection!.onConnectionState = (state) {
    log("Connection state: $state");
    connectionState.value = state; // Bağlantı durumunu güncelliyoruz
  };
}