Javascript 什么触发webRTC API连接到stun服务器

Javascript 什么触发webRTC API连接到stun服务器,javascript,webrtc,Javascript,Webrtc,不知道这个例子是否正确 在该过程中,调用new rtpeerconnection()然后调用createOffer()然后调用setLocalDescription() 然后,我等待onicecandidate获取它提供的信息,首先发送报价,然后通过信号服务器将ICE候选人发送给其他对等方 然后,另一个对等方将收到的要约放入setRemoteDescription(要约)中,然后将收到的icecandidate(icecandidates)放入addIceCandidate(icecandida

不知道这个例子是否正确
在该过程中,调用
new rtpeerconnection()
然后调用
createOffer()
然后调用
setLocalDescription()

然后,我等待
onicecandidate
获取它提供的信息,首先发送
报价
,然后通过
信号服务器将
ICE候选人
发送给其他对等方

然后,另一个对等方将收到的
要约
放入
setRemoteDescription(要约)
中,然后将收到的
icecandidate(icecandidates)
放入
addIceCandidate(icecandidates)
中,然后调用
createAnswer()
这将给出一个
应答
放入
setLocalDescription(应答)
这将触发
onicecandidate
使用
答案
=
报价
获取这些
ICE候选人
,并将其发送回其他对等方

另一个对等方将
answer
放入
setRemoteDescription(answer)
中,然后将收到的
icecandidate
放入
addIceCandidate(icecandidate)


我认为在本例中,当在本地网络内进行测试时,连接会起作用,但如果因为它不是本地网络而不能起作用呢,在本例中,API将在哪一步调用STUN服务器?如果API调用了STUN服务器,我还需要调用哪些其他函数?

您需要在对等连接的配置中指定一个STUN服务器。例如:

pc=newrtpeerconnection({iceServers:[{url:stun:stun.1.google.com:19302}]});
没有其他方法可以调用,只要它已经在局域网上工作。与以前相比,您应该可以从中看到更多对
onicecandidate
的调用。就这样


请注意,您描述的两件事情是并行发生的,但简而言之,触发浏览器连接到STUN服务器的是
setLocalDescription
。它会导致浏览器的内置ICE代理启动此连接的候选收集过程,而STUN就是其中的一部分。

我发现,立即生成要发送到STUN服务器的绑定请求的一种方法是将配置中的ICEScandidatePoolSize选项设置为>0

config = {iceServers: [{urls:stun:stun.stunprotocol.org}], iceCandidatePoolSize: 1};
peerConnection = new RTCPeerConnection(config); // pretty much starts to resolve the DNS name and sends BIND requests right away.
希望这有帮助


另外:还有很多关于webrtc连接故障排除的建议。

我仍然不明白这一点,我的代码从来没有向我的本地STUN服务器发送过任何东西,您是否有一个工作示例,其中它连接到任何STUN服务器,并且您可以看到它何时在“网络”中发生调试工具所以我必须补充一点,我的代码已经可以连接本地wifi网络中的两台不同的计算机,当一台计算机在不同的网络上时,它会失败,但在这两种情况下,都不会向STUN服务器发送任何信息