为什么onnegotiationneeded只触发一次?
Why onnegotiationneeded is triggered only once?
我正在将 tracks
添加到我的对等方,并且第一次 onnegotiationneeded
被触发时很好。但是,添加更多 tracks
后 onnegotiationneeded
不会被触发,因此新的 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
仅在 removeTrack
或 addTrack
处触发一次,并且无法检测到更多其他轨道。因此,我最终通过
重新建立了连接
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 }))
}
我正在将 tracks
添加到我的对等方,并且第一次 onnegotiationneeded
被触发时很好。但是,添加更多 tracks
后 onnegotiationneeded
不会被触发,因此新的 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
仅在 removeTrack
或 addTrack
处触发一次,并且无法检测到更多其他轨道。因此,我最终通过
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 }))
}