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服务器发送任何信息