我无法通过它的PeerConnection和'onicecandidate'事件了解webRTC.
据我所知,您必须使用STUN(或TURN)服务器启动对等连接,因为它会将您的ICE候选者发送给您,以便与另一个对等方进行通信.
我已经看到了将PeerConnection对象的服务器参数留下的示例,我也不明白,但我们只是说它需要服务器参数.
所以,当我写下以下代码时:
var pc, ice = { "iceServers": [{ "url": "stun:stun.l.google.com:19302" }] };
if(typeof mozRTCPeerConnection === 'function') {
pc = new mozRTCPeerConnection(ice);
}
else {
console.log('google');
pc = new webkitRTCPeerConnection(ice);
}
pc.onicecandidate = function(event) {
console.log(event);
}
Run Code Online (Sandbox Code Playgroud)
我希望'onicecandidate'事件会触发,但它不起作用.我也尝试过其他公共STUN服务器,但没有任何反应.所以我认为我的理解可能有问题:)
我正在开发一个简单的示例来测试 WebRTC,我发现了以下奇怪的行为。
使用 Chrome 时,媒体约束指定为:
mediaConstraints = {'mandatory': {'OfferToReceiveAudio':true, 'OfferToReceiveVideo':true}};
Run Code Online (Sandbox Code Playgroud)
这工作正常。
但是,当使用 Firefox(Mac 上的 35.0.1)时,根据规范,它应该是:
mediaConstraints = {'offerToReceiveAudio':true,'offerToReceiveVideo':true};
Run Code Online (Sandbox Code Playgroud)
但不起作用(Ice 失败了!)
使用“ Ø fferToReceiveAudio”
mediaConstraints = {'OfferToReceiveAudio':true,'offerToReceiveVideo':true};
Run Code Online (Sandbox Code Playgroud)
工作正常。
这是记录在案的行为吗?
所以我按照本教程学习如何实现 WebRTC 服务器-客户端设置。一旦我开始工作,我想将客户端分成两部分,一个发送者和一个接收者。现在他们可以相互建立连接,但接收者永远不会从发送者那里得到流。
我设法确定原始代码和拆分版本之间的代码流保持不变,只是两个对等方都不执行 onicecandidate 事件。
根据这个,我需要明确包括OfferToReceiveAudio: true和OfferToReceiveVideo: true因为我使用的是Chrome,我做到了,但它似乎没有任何区别。
目前,它们都从对方接收 SDP,peerConnection 中有本地和远程描述,并且iceGatheringState是“新的”但iceConnectionState正在“检查”(与他声明的第二个链接也应该是“新的”不同)
当像这样一分为二时,他们为什么不交换 ICE 候选人?
const HTTPSPort = 3434;
const domain = '127.0.0.1';
const wssHost = 'wss://' + domain + ':' + HTTPSPort + '/websocket/';
// Feed settings
const video = true;
const audio = true;
const constraints = { "audio": audio, "video": video };
var videoContainer = null, feed = null,
pC = null, wsc = …Run Code Online (Sandbox Code Playgroud)