为什么onnegotiationneeded只触发一次?

Why onnegotiationneeded is triggered only once?

我正在将 tracks 添加到我的对等方,并且第一次 onnegotiationneeded 被触发时很好。但是,添加更多 tracksonnegotiationneeded 不会被触发,因此新的 tracks 不会显示任何效果。这是我正在使用的代码的主要部分:

  const { id } = req.params
  peer[id] = new webrtc.RTCPeerConnection()
  const guest = { id, name: '', tracks: [], room }
  guest.tracks.forEach(t => peer[host.id].addTrack(t))

  const createNegotiation = async (peerID) => {
    peer[peerID].onnegotiationneeded = async () => {
      console.log('onnegotiationneededonnegotiationneeded')
      const offer = await peer[peerID].createOffer()
      await peer[peerID].setLocalDescription(offer)
      dc.send(JSON.stringify({ type: 'onnegotiationneeded', "sdp": peer[peerID].localDescription }))
    }
  }

事实证明,onnegotiationneeded 仅在 removeTrackaddTrack 处触发一次,并且无法检测到更多其他轨道。因此,我最终通过

重新建立了连接
  const reNew = async (peerID) => {
      console.log('RENEW WITH PEER ID '  , peerID)
      const offer = await peer[peerID].createOffer()
      await peer[peerID].setLocalDescription(offer)
      peer[peerID].dcm.send(JSON.stringify({ type: 'RENEW', "sdp": peer[peerID].localDescription }))
  }