WebRTC adapter.js是什么以及我们为什么需要它?(二)

作者:Tsahi Levent-Levi,Philipp Hancke(原文链接

翻译:刘通

原标题:What is WebRTC adapter.js and Why do we Need it?

前文链接:WebRTC adapter.js是什么以及我们为什么需要它?(一)

 

现在的adapter.js

adapter21

如果你只想做一个简单随意的项目的话,你可以选择在代码里加入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的写入方式使得当本地变体可用时它们不会变为非活跃状态。

再进一步

adapter22

有4种力量来推动adapter.js:

1. WebRTC规范本身。这正是我们所期望的,并建议开发人员针对此点进行工作。

2. 浏览器的WebRTC的实现。目前,它排在WebRTC规范之后。在这之前,建议使用adapter.js(你也可以自己写,但为什么又要花额外的精力来维护它呢?)

3. adapter.js实现。你需要时刻关注新版本,采用新版本,并且对它们进行测试。

4. 你自己的实现,以及如何与上述3种力量来搭配。

我们会有那么一天不需要adapter.js吗?

肯定的,但是不要去等待那天到来之后再去做你的工作。

填写常用邮箱,接收社区更新

WebRTC 中文社区由

运营