我正在使用WebRTC并意识到它并非在所有浏览器中都受支持。但是,Chrome和Firefox确实支持它(在较新版本中;我安装了最新版本),只要您具有某些变量的正确前缀即可。例如,我有以下PeerConnection用于跨浏览器支持:
var PeerConnection = window.RTCPeerConnection || window.mozRTCPeerConnection || window.webkitRTCPeerConnection;
现在应该支持跨浏览器,我有以下代码:
var servers = {
iceservers: [
{url: "stun:23.21.150.121"},
{url: "stun:stun.1.google.com:19302"}
]
};
var pc = PeerConnection(servers);
但是在Chrome中,最后一行(var pc = PeerConnection(servers);
)会出错。错误是:
Failed to construct 'RTCPeerConnection': Malformed RTCConfiguration"}
显然,Chrome不喜欢PeerConnection声明中的配置参数。但我的问题是:为什么我会收到此错误,以及仅限Chrome? (FireFox工作正常)
答案 0 :(得分:6)
嗯,解决方案实际上很简单。在驼峰的情况下,必须使用servers
创建iceServers
对象。此外,您在创建连接时忘记了new
关键字,但这可能是问题中的拼写错误。
像这样:
var servers = {
iceServers: [
{url: "stun:23.21.150.121"},
{url: "stun:stun.1.google.com:19302"}
]
};
var pc = new PeerConnection(servers);
所有小写和驼峰的情况都可以在FireFox中正常使用。因此,更改它不应该改变它在那里的工作方式,但它必须是驼峰才能在Chrome中工作。
答案 1 :(得分:2)
见Ben的回答。 JavaScript区分大小写,并且是“冰箱服务器”。是来自mediacapture spec的正确拼写。
我想澄清所有小写'冰服务员'实际上并没有在Firefox中工作,因为你的STUN服务器被忽略了。当Firefox没有看到提供的服务器时,它会使用默认的STUN服务器,这就是为什么它看起来有效,但没有使用您认为的STUN服务器。