我正在使用WebRTC API在两台运行在Chrome浏览器上的PC之间进行视频通话.我的观察是ICE候选人只有在我连接到互联网时生成,否则不会产生冰候选者.为什么会那样?
连接块
var pc_config = {"iceServers":[]}; pc = new webkitRTCPeerConnection(pc_config); pc.onicecandidate=function (evt) { if(evt.candidate){ console.log("Sending candidate to other peer"+evt); jWebSocketClient.broadcastText("",evt); } };
谢谢,Sureshkumar Menon
据我了解,有四种类型的ICE候选人:
主持人候选人:来自您的本地界面.
服务器自反候选者:由STUN服务器提供,将您的本地地址转换为公共网络.
中继候选:由TURN服务器提供,数据将由服务器中继
同行反身候选人:在连通性检查期间发现候选人的罕见情况(?).我将跳过这一部分,因为它非常罕见,我不确定理解它的大局.
如果您没有为程序提供任何STUN/TURN地址或者它们无法访问,则唯一可以检索的候选地址是主机地址.请注意,您的本地地址(127.0.0.1)不被视为潜在候选人.希望能帮助到你.
但是,我并不完全确定您的用例.两台计算机是否在同一个本地网络上?如果您的界面已启动,则应至少获得候选主机.我只使用C++ API,但我不明白为什么它会与Javascript有不同的行为.