Git Product home page Git Product logo

Comments (5)

iyeldinov avatar iyeldinov commented on August 21, 2024 4

ONN twice issue can be fixed with a re-entrancy guard:

pc.onnegotiationneeded = async e => {
  if (pc._negotiating == true) return;
  pc._negotiating = true;
  try {
    return cb(e);
  } finally {
    pc._negotiating = false;
  }
}

So the updated code from tutorial will look like (ah, and it is async/await instead of promises too :) )

async function handleNegotiationNeededEvent() {
    if (myPeerConnection._negotiating == true) return;
    log("*** Negotiation needed");
    myPeerConnection._negotiating = true;
    try {
        log("---> Creating offer");
        const offer = await myPeerConnection.createOffer();

        log("---> Creating new description object to send to remote peer");
        await myPeerConnection.setLocalDescription(offer);

        log("---> Sending offer to remote peer");
        sendToServer({
            name: myUsername,
            target: targetUsername,
            type: "video-offer",
            sdp: myPeerConnection.localDescription
        });
    } catch (e) {
        reportError(e)
    } finally {
        myPeerConnection._negotiating = false;
    }
}

from samples-server.

iyeldinov avatar iyeldinov commented on August 21, 2024

Here is bug https://bugs.chromium.org/p/chromium/issues/detail?id=740501

from samples-server.

deepinder10 avatar deepinder10 commented on August 21, 2024

Solved that error but now this one.
Failed to execute 'addTrack' on 'RTCPeerConnection': A sender already exists for the track.

from samples-server.

superddr avatar superddr commented on August 21, 2024

yes, when two addTrack() are used , two onnegotiationneeded events will be fired. Still dont know what to do now

from samples-server.

sumitgupta07 avatar sumitgupta07 commented on August 21, 2024

I am having similar issue. Anyone able to figure this out. My scenarios:

  1. One user (say User A) connects with only audio track. Other user (say User B) connects with both audio and video tracks.
  2. If User B is offerer, connection is established perfectly and User A can display User B video and both are able to talk to each other.
  3. If User B is answerer and User it has to send 2 tracks, in which case it is triggering onnegotiationneeded event. Which in-turn starting another session of offer-answer session. Which is not desired.
  4. If I discard this extra onnegotiationneeded event, User A cannot see User B video. But only able to talk to each other.

Let me know if there is any solution for such solution. I am trying for last more than 1 week.

Thanks

from samples-server.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.