peers / peerjs-server

Server for PeerJS
https://peerjs.com
MIT License
4.27k stars 1.08k forks source link

the answer can't get streams from the caller !! #320

Closed Basim2Shaban closed 1 year ago

Basim2Shaban commented 1 year ago

i am facing this issue when i am trying to make call between two users the caller user can get the streams very well but the answer user cannot get any streams !! this is my code ...

 @override
  void initState() {
    super.initState();
    _localRenderer.initialize();
    _remoteRenderer.initialize();
    SocketConnections.makeCall(caller_data);

    WidgetsBinding.instance.addPostFrameCallback((timeStamp)async{
      SocketConnections.sio!.on(caller_data['caller_id'].toString()+caller_data['receiver_id'].toString(), (data){
        final mediaStream =
        navigator.mediaDevices.getUserMedia({"video": true, "audio": false});
        mediaStream.then((value) => {
          setState(() {
            _localRenderer.srcObject = value;
              debugPrint("Con id : ${peer.open}");
              callConnection = peer.call(caller_data['receiver_id'].toString(),value);
            peer.on<MediaConnection>("call").listen((call) async {
              mediaConn = call ;
              debugPrint("into the call");
              final mediaStream = await navigator.mediaDevices
                  .getUserMedia({"video": true, "audio": true});
              mediaConn.answer(mediaStream);
              mediaConn.on<MediaStream>("stream").listen((event) {
                debugPrint("start streaming");
                _localRenderer.srcObject = mediaStream;
                print(event.getVideoTracks().length);
                _remoteRenderer.srcObject = event;
                setState(() {
                  // CallProvider.answer = true;
                });
              });
              mediaConn.on("close").listen((event) {
                // callProvider.onCancelCall();
              });
            });
              callConnection.on("close").listen((event) {
                // callProvider.onCancelCall();
              });
          })
        });
      });
      var myID = await AppHelper.getUserId();
      peer = Peer(id:myID,options: PeerOptions(host:'192.168.43.197' ,secure: false,port: 9000));
      print("${peer.id!}======== this is peer");
      peer.connect(caller_data['receiver_id'].toString());

    });

  }

and here is the answer widget

  @override
  void initState() {
    super.initState();
    _localRenderer.initialize();
    _remoteRenderer.initialize();
    peer = Peer(id:myID,options: PeerOptions(host:'192.168.43.197' ,secure: false,port: 9000));

    WidgetsBinding.instance.addPostFrameCallback((timeStamp)async{
      // if(!CallProvider.answer){
      //   return ;
      // }
      var myID = await AppHelper.getUserId();
      // peer = Peer(id:myID,options: PeerOptions(host:'192.168.43.197' ,secure: false,port: 9000));
      print("${peer.id!}======== this is peer");
      peer.connect(callerData['caller_id'].toString());
      final mediaStream =
      navigator.mediaDevices.getUserMedia({"video": true, "audio": false});
      mediaStream.then((value) => {
        setState(() {
          _localRenderer.srcObject = value;
          peer.on<MediaConnection>("call").listen((call) async {
            mediaConn = call ;
            CallProvider.inCall = true;
            debugPrint("into the call");
            final mediaStream = await navigator.mediaDevices
                .getUserMedia({"video": true, "audio": true});
            mediaConn.answer(mediaStream);
            mediaConn.on<MediaStream>("stream").listen((event) {
              debugPrint("start streaming");
              setState(() {
                _localRenderer.srcObject = mediaStream;
                print(event.getVideoTracks().length);
                _remoteRenderer.srcObject = event;
                // CallProvider.answer = true;
              });
            });
            mediaConn.on("close").listen((event) {
              // callProvider.onCancelCall();
            });
          });
        })
      });
    });

  }