WebRTC示例未连接

时间:2018-04-14 09:37:42

标签: javascript webrtc

所以我使用RTCDataChannels开始一个项目来传输文本。我以为我理解它是如何工作的,但是在编写了一堆代码后,我想也许不是,所以我把它简化为最基本的例子,我仍然无法将这两个套接字连接起来。

我的理解是,一旦两个套接字的本地和远程描述设置正确,并且他们的冰候选者被传递给彼此,那么他们将自动连接。示例代码创建了两个RTCPeerConnections,并按照说明将它们设置为相互连接,但它们的状态意味着仍有工作要做。

我可能遗漏了一些东西,比如订单错了,或者我错过了某个地方的一个步骤。大部分代码都取自MDN Example,所以也许这已经过时了?

任何帮助都将受到赞赏,这是我的第一个问题所以请说明您是否需要更多信息或是否有任何问题。感谢。



<div id="log"></div>
<script>
var cfg = {'iceServers': [{'url': 'stun:23.21.150.121'}]},
  con = { 'optional': [{'DtlsSrtpKeyAgreement': true}] }


var client = new RTCPeerConnection(cfg, con);
var host = new RTCPeerConnection(cfg, con);

host.onicecandidate = function(can){client.addIceCandidate(can.candidate || can)}
client.onicecandidate = function(can){host.addIceCandidate(can.candidate || can)}

host.createOffer()
    .then(offer => host.setLocalDescription(offer))
    .then(() => client.setRemoteDescription(host.localDescription))
    .then(() => client.createAnswer())
    .then(answer => client.setLocalDescription(answer))
    .then(() => host.setRemoteDescription(client.localDescription))
    .then(function(){
			log(host.iceConnectionState);
			log(client.iceConnectionState);
    });

var log = msg => document.querySelector("#log").innerHTML += "<br>" + msg;
</script>
&#13;
&#13;
&#13;

0 个答案:

没有答案