Webrtc 是否应通过addicecandidate添加空字符串?
我的问题是关于webrtc谈判 许多在线教程和MDN中描述的内容存在矛盾 在MDN中,它说 在每一代候选人结束时,一代候选人结束 通知以RTCICE候选者的形式发送,其候选者 属性是空字符串。此候选人仍应添加到 与往常一样,使用addIceCandidate()方法进行连接,以便 将该通知传递给远程对等方 在选举期间根本没有更多的候选人 当前谈判交换,候选人结束通知为 通过传递候选属性为null的RTICEAndicator发送。 此消息不需要发送到远程对等方。这是一个 状态的遗留通知,可由 通过观察,等待iceGatheringState更改为完成 用于icegatheringstatechange事件 但是,在本教程中,他们介绍了以下代码Webrtc 是否应通过addicecandidate添加空字符串?,webrtc,p2p,nat-traversal,rtcpeerconnection,Webrtc,P2p,Nat Traversal,Rtcpeerconnection,我的问题是关于webrtc谈判 许多在线教程和MDN中描述的内容存在矛盾 在MDN中,它说 在每一代候选人结束时,一代候选人结束 通知以RTCICE候选者的形式发送,其候选者 属性是空字符串。此候选人仍应添加到 与往常一样,使用addIceCandidate()方法进行连接,以便 将该通知传递给远程对等方 在选举期间根本没有更多的候选人 当前谈判交换,候选人结束通知为 通过传递候选属性为null的RTICEAndicator发送。 此消息不需要发送到远程对等方。这是一个 状态的遗留通知,可由 通
function handleICECandidateEvent(event) {
if (event.candidate) {
sendToServer({
type: "new-ice-candidate",
target: targetUsername,
candidate: event.candidate
});
}
}
如果候选者是空字符串,将对其求值为falsy,而不是通过sendToServer
发送
更有趣的是,即使在同一篇文章中
它们有以下示例代码
rtcPeerConnection.onicecandidate = (event) => {
if (event.candidate) {
sendCandidateToRemotePeer(event.candidate)
}
}
但就在这个片段下面,他们说
当ICE谈判会议没有候选人可供提名时
对于给定的RTICeTransport,它已完成一代人的收集
候选人名单。已发生这种情况由ICE候选者表示
候选字符串为空(“”)的事件
您应该像任何标准候选者一样将其发送给远程对等方,如上文“共享新候选者”中所述。这
确保为远程对等方提供候选端
通知也是如此
实际上,我阅读了很多在线教程,但我从未见过任何地方可以处理空字符串候选项。旧规范不要求发送空候选项,但新规范要求发送和addIceCandidate()空候选项。
由于Chrome仍然是一个旧的规范,当addedIceCandidate()时,空的候选者将导致错误,因此我不会发送它。您能为您的声明提供一个资源链接吗?我想跟踪根本问题,直到它支持更新我的代码为止。请查看此项了解详细信息