作者:Tsahi Levent-Levi,Philipp Hancke(原文链接)
翻译:刘通
原标题:What is WebRTC adapter.js and Why do we Need it?
前文链接:WebRTC adapter.js是什么以及我们为什么需要它?(一)
现在的adapter.js
如果你只想做一个简单随意的项目的话,你可以选择在代码里加入https://webrtc.github.io/adapter/adapter-latest.js。
这是最新的发布版本。但是需要注意的是,你的应用程序会自动提取所有更改,因此我们不建议将它用于较大的应用程序。
adapter.js下载的主要来源是NPM。大多数JavaScript项目中,你可以按照如下方式安装webrtc-adapter:
npm install webrtc-adapter
注意:因为adapter.js会操纵核心WebRTC JavaScript API升级,所以这有点冒险。因此我们建议在升级该版本的时候保留package.json文件中所指定的确切版本,并且在更新之后进行大量的测试。
要使用它,只需要在你的JavaScript文件中加入一个模块:
const adapter = require(‘webrtc-adapter’);
由于它是一个填充物,因此默认情况下会透明地修改窗口对象。adapter对象为你提供有关browserDetails对象中检测到的浏览器变体和版本信息:
console.log(adapter.browserDetails.browser);
console.log(adapter.browserDetails.version);
这与平台之类的版本检测库略有不同,因为它会把基于Chromium的浏览器(如Opera)视为Chrome浏览器—因为它们运行的是相同的WebRTC引擎。
你可以使用检测到的浏览器和版本来添加自己的逻辑,以解决某些Chrome版本中出现的错误(例如Chrome 61 / 安卓视频卡住不动,或者Chrome 58版本TURN / TCP问题)。
要检查WebRTC支持,你需要检查RTCPeerConnection是否被定义:
!!window.RTCPeerConnection
如果你的用例需要的话,则getUserMedia
!!(navigator.mediaDevices && navigator.mediaDevices.getUserMedia)
或者RTCPeerConnection的createDataChannel的方法:
‘createDataChannel’ in RTCPeerConnection.prototype
之后,你就可以像规范中所示那样简单地编写WebRTC代码了:
http://w3c.github.io/webrtc-pc/#simple-peer-to-peer-example。
官方的WebRTC示例可以做为一个很好的起点,因为它们展示了大量的用例,而且维护人会确保它们在语义上是正确的。大多数shim的写入方式使得当本地变体可用时它们不会变为非活跃状态。
再进一步
有4种力量来推动adapter.js:
1. WebRTC规范本身。这正是我们所期望的,并建议开发人员针对此点进行工作。
2. 浏览器的WebRTC的实现。目前,它排在WebRTC规范之后。在这之前,建议使用adapter.js(你也可以自己写,但为什么又要花额外的精力来维护它呢?)
3. adapter.js实现。你需要时刻关注新版本,采用新版本,并且对它们进行测试。
4. 你自己的实现,以及如何与上述3种力量来搭配。
我们会有那么一天不需要adapter.js吗?
肯定的,但是不要去等待那天到来之后再去做你的工作。