我正在使用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类方法。
谢谢,
答案 0 :(得分:0)
无论使用哪个冰服务器,都会在构造时传递给RTCPeerConnection构造函数(该对象被称为pc
,用于apprtc示例)。您可以通过查看pcConfig
对象来专门查看服务器。
创建连接后(在此示例中调用开始之前不会执行),将设置localDescription(RTCSessionDescription
对象)。一旦设置,WebRTC api将开始自动收集IceCandidates,以对抗创建对等连接时首次引入的ice服务器。创建新候选项后,将触发onicecandidate
事件(如果在创建pc
对象后查看该回调,则可以看到用于传输候选项的函数。)
所以一般步骤如下:
createOffer
或createAnswer
函数中设置的成功回调创建。)onicecandidate
事件。现在,专门针对apprtc演示页面,它使用了一个开放式击晕服务器stun:stun.l.google.com:19302
和一系列封闭式转弯服务器(托管在Google的云上),其中包含在页面加载时收集的动态凭据。