生成ICE候选人

Sur*_*non 3 webrtc

我正在使用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);
        }
      };  
Run Code Online (Sandbox Code Playgroud)

谢谢,Sureshkumar Menon

ZaX*_*ZaX 8

据我了解,有四种类型的ICE候选人:

  1. 主持人候选人:来自您的本地界面.
  2. 服务器自反候选者:由STUN服务器提供,将您的本地地址转换为公共网络.
  3. 中继候选:由TURN服务器提供,数据将由服务器中继
  4. 同行反身候选人:在连通性检查期间发现候选人的罕见情况(?).我将跳过这一部分,因为它非常罕见,我不确定理解它的大局.

如果您没有为程序提供任何STUN/TURN地址或者它们无法访问,则唯一可以检索的候选地址是主机地址.请注意,您的本地地址(127.0.0.1)不被视为潜在候选人.希望能帮助到你.

但是,我并不完全确定您的用例.两台计算机是否在同一个本地网络上?如果您的界面已启动,则应至少获得候选主机.我只使用C++ API,但我不明白为什么它会与Javascript有不同的行为.


Mas*_*iar 1

如果我没记错的话,ICE 候选人是通过联系STUN服务器创建的,因此你需要互联网连接。这样做是为了将私有地址转换为公共地址,以使您的客户端能够连接(或被连接)到其他客户端。