正文
在 2011 年以前,浏览器之间要想实现实时通信,需要私有技术,其中大部分都是通过插件和客户端来安装使用。对于许多用户而言,插件的下载、安装和更新是一个复杂、繁琐和容易出错的操作。而对于开发人员来说,插件的调试、测试、部署、错误修复和维护同样困难重重,且不提还涉及到一些受版权保护的技术,整合相当复杂。再者,很多时候,服务提供商很难说服用户去安装插件。
但这一两头吃力还不讨好的局面就这样被Google 将 WebRTC 项目开源所打破。2011 年,WebRTC 基于 BSD 协议开源,同年,W3C 启动 WebRTC 计划,让 WebRTC 成为了 HTML5 标准的一部分(目前,该规范还在开发中)。
由此,浏览器厂商将 WebRTC 内建在浏览器中,使得Web 应用研发人员能够通过 HTML 标签和 JavaScript API 即可实现 Web 音视频通信功能。在 WebRTC 的官网上,Google 如此表述道:
互联网成功的关键因素之一,便是一些如HTML、HTTP 和 TCP/IP 等的核心技术是开放和标准化的。目前,在浏览器实时通信领域还没有免费、高质量、完整的解决方案,而 WebRTC 正是这样的技术。
该技术包含了使用 STUN、ICE、TURN、RTP-over-TCP的关键 NAT 和防火墙穿透技术,并支持代理。通过浏览器,WebRTC 把通讯双方的信令状态直接映射到 PeerConnection 里面来抽象信令处理,这样,开发人员按不同的应用场景选择不同的会话协议,比如 SIP、XMPP/Jingle 等。截至目前,该技术的使用已经超过了 8 年,集成了最佳的音频、视频引擎,并被部署到数以百万的终端中,同时这些技术 Google 不收取任何费用。
从最初的为了解决浏览器上视频通话而诞生,WebRTC已经发展到可以实现在浏览器之间进行任意数据的通信。其中,Chrome、Firefox、Opera 对于 WebRTC 的支持已较为成熟,而微软于 2014 年提出了 ORTC(对象 RTC,也有人称之为 WebRTC 1.1),希望在对 Google 的 WebRTC 提案稍作修改的基础上,也提供支持。目前,最新版本的 Microsoft Edge 已经支持 ORTC。
而对于苹果官方终于宣布“WebRTC 将在 Safari 11 上支持”,赵斌如此评价道:“目前,WebRTC 已经有了 1.0 版本,暂时还是草案。但是我们可以看到的是,WebRTC 在网络抗丟包处理、视频引擎(比如 H.264 Codec 支持成熟度)等方面,还是需要加强的。1.0 之后的 1.1 版本,考虑到了和 ORTC 的结合,让 WebRTC 可以在微软浏览器上实现,这是 Google 和微软同时推动的阶段性进展。实际上,Google 的 WebRTC 从一开始的计划就是能支持所有的主流浏览器。之前最大的障碍是微软浏览器和苹果浏览器,但是通过 Google 的推动,这些实际上都在发生变化。而 Safari 在 iOS 11 中将支持 WebRTC,既是行业里最后一个重要的浏览器加入这一潮流,也是这一进程的重大胜利。这在 WebRTC 的发展上是里程碑性的事件,将会极大地推动 RTC 技术在各种应用网站上的普及。当然,目前苹果对 WebRTC 的支持还比较粗糙,需要更多的时间成熟,并解决互通上的更多问题。微软则还需要在标准的一致性上参与行业的讨论,缩小和拉近在互通性方面的差距。”