iceCandidate在AppRtcDemo中生成的确切位置?

时间:2014-11-11 10:40:47

标签: webrtc server

我正在使用webrtc Peer to Peer Calling并成功运行WEBRTC网站上提供的AppRTCDemo。我已经完成了代码并坚持了几点:

1:当我输入网址时,它会点击服务器,我得到了回复

response return from server{"meta_viewport":"","pc_constraints":"{\"optional\": [{\"googImprovedWifiBwe\": true}]}","opusfec":"true","include_vr_js":"","vsbr":"","audio_receive_codec":"opus\/48000","arbr":"","vrbr":"","vsibr":"","token":"AHRlWroqCeuFFBWs4dLJRahxtwho2ldeH_94M_ZipRkK7aIH3nAiSFfScjb_Opz2LwC9xVeWeQrJkRWQAeTsK5sxdJEPoC3jP8uQXkE23QnSANqoBwsHOM4","initiator":1,"ssr":"","room_key":"95505311","pc_config":"{\"iceServers\": [{\"urls\": \"stun:stun.l.google.com:19302\"}]}","stereo":"false","audio_send_codec":"","turn_url":"https:\/\/computeengineondemand.appspot.com\/turn?username=77294535&key=4080218913","me":"77294535","room_link":"https:\/\/apprtc.appspot.com\/?r=95505311&t=json","error_messages":[],"offer_constraints":"{\"optional\": [], \"mandatory\": {}}","asbr":"","media_constraints":"{\"audio\": true, \"video\": true}"}

在这里,我只是想知道他们在创建iceServer的确切位置?在他们的服务器上或他们的channel.html文件中是否有任何代码。

有没有办法在没有服务器的情况下在应用程序上生成iceServer?或IceServer是我们从服务器发送的stun / turn URL?

我对Channel.html也有一些疑问:

如何准确帮助这个演示运行的channel.html文件?我也经历过这个,它正在调用onOpen()并调用GAECLIENT类方法。

谢谢,

1 个答案:

答案 0 :(得分:0)

无论使用哪个冰服务器,都会在构造时传递给RTCPeerConnection构造函数(该对象被称为pc,用于apprtc示例)。您可以通过查看pcConfig对象来专门查看服务器。

创建连接后(在此示例中调用开始之前不会执行),将设置localDescription(RTCSessionDescription对象)。一旦设置,WebRTC api将开始自动收集IceCandidates,以对抗创建对等连接时首次引入的ice服务器。创建新候选项后,将触发onicecandidate事件(如果在创建pc对象后查看该回调,则可以看到用于传输候选项的函数。)

所以一般步骤如下:

  1. 在创建RTCPPeerConnection对象时设置要收集候选者的iceServers
  2. 将localDescription设置为您创建的本地RTCSessionDescription对象(通常通过您在对等连接的createOffercreateAnswer函数中设置的成功回调创建。)
  3. 它会在构建对等连接时自动对照您设置的服务器收集候选人,并且每个候选人都会触发onicecandidate事件。
  4. 现在,专门针对apprtc演示页面,它使用了一个开放式击晕服务器stun:stun.l.google.com:19302和一系列封闭式转弯服务器(托管在Google的云上),其中包含在页面加载时收集的动态凭据。