[webrtc-pc] need more clarifying? about example in MDN WebRTC perfect negotiation pattern (#2806)

Adamkaram has just created a new issue for https://github.com/w3c/webrtc-pc:

== need more clarifying? about example in MDN WebRTC perfect negotiation pattern ==
here i belive they miss something unless i do   
what they recommended to do in new api to do that   

```

 let handleRenegotiation = async (description) => {
 try {
    if (description) {

 const offerCollision = description.type == "offer" &&
        (makingOffer || yourConn.signalingState != "stable");
     
        ignoreOffer = !polite && offerCollision;


 if (ignoreOffer) {
          return;
      }

 yourConn.setRemoteDescription(description)
 if (description.type == "offer") {
  await yourConn.setLocalDescription();
       
            wbsc.emit("SEND_EVENT_EMIT_CALL_AUDIO", {
              data: { type: "answer", answer: yourConn.localDescription, id: connectedUser },
            });
      }
    }


  }catch (e) {
    console.log(e);
  }
  }
```

i believe this could work if i'm impolite peer 

what if i'm polite peer 

how to do it should i split the conditions there to check who am i specifically    ? as in [here](https://github.com/w3c/webrtc-pc/issues/2167#issuecomment-499475161) or similar to

or how i can access 2 peersConnection without  clarify that

yourConn = new RTCPeerConnection(config);

yourConn2 = new RTCPeerConnection(config);

can i use 1 object in this case for both connection to work for both end points in generaly without   
yourConn and yourConn2?

or i missed the configuration of onnegotiationneeded ?

also is this how i can implement onnegotiationneeded  ob both side   

```
 yourConn.onnegotiationneeded = async () => {
                  console.warn("yourConn.onnegotiationneeded");
                  try {
                    makingOffer = true;
                    await yourConn.setLocalDescription();
                    wbsc.emit("SEND_EVENT_EMIT_CALL_AUDIO", {
                      data: {
                        type: "negotiation",
                        description: yourConn.localDescription,
                        id: connectedUser,
                      },
                    });
                  } catch (e) {
                    console.log("renegotiationneded fail is ", e);
                  } finally {
                    makingOffer = false;
                  }
                };

yourConn2.onnegotiationneeded = async () => {
              console.warn("yourConn2.onnegotiationneeded");
              const offer = await yourConn2.createOffer();
              try { 
              
                
                
               
                makingOffer = true;
                await yourConn2.setLocalDescription(); 
                wbsc.emit("SEND_EVENT_EMIT_CALL_AUDIO", {
                  data: { type: "negotiation", description: yourConn2.localDescription, id: connectedUser },
                })
              }
              catch (e) {console.log("renegotiationneded fail is ",e) }
              finally { makingOffer = false }

            }
            
```

if so how in `handleRenegotiation ()`  
i accept description with `yourConn.setRemoteDescription(description)` that rollback my offer and then create answer and send it to  
the remote peer  
as i'm the one how sent the offer what i did here is wrong and should be fix? also onnegotiationneeded fires when or where?  
as i guees i as a polite peer do  
iceRestart() -> onnegotiationneeded (sending localdesscription ) to handleRenegotiation ()  
pass ignoreOffer guard in await yourConn.setLocalDescription(); does it rollback my existing offer or what should it do?  
after that what happend with onnegotiationneeded does i throw to next step or webrtc will re run onnegotiationneeded again ?  
and within it what happend to my sdp and icecandidate if that the logic i should stick with as they recomended  
who restart ice first and making the other peer restart his ice secondly

Please view or discuss this issue at https://github.com/w3c/webrtc-pc/issues/2806 using your GitHub account


-- 
Sent via github-notify-ml as configured in https://github.com/w3c/github-notify-ml-config

Received on Sunday, 11 December 2022 06:31:29 UTC