gpt4 book ai didi

javascript - 处理使用 PeerConnection 时处理 ICE 候选人的过程?

转载 作者:数据小太阳 更新时间:2023-10-29 04:34:47 26 4
gpt4 key购买 nike

我已经用尽了所有可能来让稳定的 WebRTC 实现正常工作,并且希望得到一些建议。

处理跨浏览器工作连接的所有可能解决方案都已考虑在内,例如:

  • 在 Chrome 浏览器上发送 SDP 之前等待所有候选人都已收集
  • 收集到候选人后立即发送候选人,并在设置本地 sdp 后将他们添加到远程连接
  • 一旦设置了本地和远程描述(远程和本地),就添加候选人
  • 在收到候选人后添加录取通知书,并将回复发送给候选人
  • 在 ice 故障时重置对等连接
  • 其他(匆忙)

基本上,我要求有人帮忙提供图表或逐步处理冰的过程,以便为 chrome 和 firefox 跨浏览器提供有效的解决方案(两者都是最新的当前发布时间)。

在这一点上,我已经筋疲力尽,没有想到任何其他可能性,我们将不胜感激任何帮助。

谢谢,十二月:)

最佳答案

我很同情你的挫败感。

对于 RTCPeerConnection,在调用 createOffer() 和 setLocalDescription() 之后,ICE 代理将开始收集 ICE 候选对象。在这一点上,您可以决定是否使用 Trickle ICE,候选人一旦可用就会被发送到远程对等点,或者您可以等待所有候选人都被收集(我的大部分教程都来自across 似乎采用了涓流方法,但遗漏了一些有关正确处理此问题的细节)。

涓流方法:

当 RTCPeerConnectionIceEvent 被触发时,一个新的候选者可用:

peerConnection.onicecandidate = function(newRTCPeerConnectionIceEvent) {

var newCandidate = newRTCPeerConnectionIceEvent.candidate;
// send candidate to remote via signalling channel
}

在远程端,可以将候选人添加到他们的对等连接中:

peerConnection.addIceCandidate(RTCIceCandidate);

如果您尚未在远程对等连接上调用 setRemoteDescription,我相信尝试过早添加候选者会产生错误,因为这会在尚未设置时尝试将其添加到 remoteDescription。看这个Errors when ICE Candidates are received before answer is sent .

非滴流方法:

您可以按如下方式等待所有候选人聚集在一起:

peerConnection.onicecandidate = function(newRTCPeerConnectionIceEvent) {

if (newRTCPeerConnectionIceEvent.candidate === null) {

// send the offer (generated previously) to the remote peer
// the offer sdp should contain all the gathered candidates
}
}

有关此技术的更多讨论,请参阅此链接:http://muaz-khan.blogspot.co.uk/2015/01/disable-ice-trickling.html (请参阅页面底部关于在报价已包含所有候选人时生成答案 sdp 的评论)。

请注意,信号机制可能会影响您的方法,即您的信号是否存在任何明显的延迟。我认为涓流方法假设您正在使用低延迟信号,因为它旨在减少调用建立时间。

关于javascript - 处理使用 PeerConnection 时处理 ICE 候选人的过程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29655160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com