WebRTC 是一个支持网络浏览器进行实时语音对话或视频对话的软件架构。
本书使用形象的案例介绍,逐步深入地阐述了 WebRTC 的幕后工作原理。通过阅读本书,读者可以快速、有效地掌握创建一个 WebRTC 应用所必需的知识,包括获取用户设备信息、创建 WebRTC 应用的客户端和服务器、连接用户并发送数据、文件共享、数据信息安全和性能优化。
本书适合有一定 HTML 和 JavaScript 经验,希望了解 WebRTC ,并想学习实时通信工作原理的开发者参考阅读。
视频直播|语音实时聊天主流技术独家放送
前言
第一次写 HTML 代码的时候,我非常兴奋。我在键盘上输入的每一个字符都会作为指令告诉计算机该怎么处理。我很高兴我能创造出一些东西并用这些指令表达我的创造力。当我保存我的劳动成果,打开浏览器然后显示页面,这一切让我心生敬畏。当看到自己的名字以大号粗体字展现在一个叫作 GIF 的动态图片上时,心里像是有一团窜动的火焰。
web 由来已久,事实上它不仅是一个创造新事物的地方,也是展示和分享创意给他人的平台。这个表达创意的强大平台驱动着 web 以更快的速度发展。由于 web 越来越普及,我们整个生活都依赖于它。网站支持着你的邮件、娱乐、银行账号、法律文件和税收,甚至连这本书的部分撰写也是使用了 web 工具。人们想把生活搬到 web 上的需求促进了 API的快速有力发展,例如 WebRTC。
WebRTC 是 web 平台的最实质的加法指令之一。它带来了一整套的新技术,如摄像头、流动数据,甚至整个网络的协议栈。令人吃惊的是,不仅看到有大量的工作进入 Web RTCAPI,而且任何应用开发者使用它都是完全免费的。
WebRTC 的目的是实现实时通信大众化。早些时候,创建一个较小的视频通信应用需要花费几个月时间,即使是做一个很小的应用程序都需要一些定制工程。但是,现在只要花费一半甚至更少的时间。同时它也把开源社区带入实时通信领域。你可以查看全世界的其他的 WebRTC 例子,通过搜索一些源代码看看这些应用是怎么实现的。
正是这些创造性的表达方式和网络带来的自由促成了本书的出世。我非常高兴能有机会通过我的作品把这些东西带给大家,我希望能激励其他人像我当初一样,同样由于被激励做了第一个网页。写这本书是我工作中最重要也是最困难的事之一,但我非常感激在这过程中所学习到的东西。
如果你正在寻找能创建一个新的最简单的实时通信的经验,并想分享给他人,可以读这本书。这本书像其他技术书籍一样,只是引导人们在 web 上创造一些更好的东西的途径。你不仅能学会怎样使用 WebRTC,也能够做到举一反三。这本书不仅是一个学习工具,而且也是对有激情地创造一些事情的激励。
这本书包含了什么
第 1 章,开启 WebRTC 之旅,囊括了 WebRTC 怎么以网页为基础,来实现音频和视频的通信。可以在你的浏览器上运行一个 WebRTC 应用。
第 2 章,获得 User Media,介绍了创建通信应用程序的第一步、网络摄像头和麦克风的获取。这一章还包括如何使用媒体和流 API 捕捉你的信息,我们也开始开发建设基础通信的例子。
第 3 章,创建简单的 WebRTC 应用,包括了对第一个 WebRTC-RTC 对等连接的介绍。同时看到 WebRTC 里面的复杂结构以及开始使用 API 后我们可以期待些什么,来奠定创建一个 WebRTC 应用程序的基础。
第 4 章,创建信令服务器,包括创建我们自己的信令服务器,来帮助客户在互联网上找到彼此的步骤。这也包括在 WebRTC 上信令是如何工作,以及如何运用到我们的示例应用程序中去的深层信息。
第5章,把客户端连接到一起,包括我们的信令服务器的实际使用,也包括使用WebRTCAPI、媒体捕捉和在前面章节用来创建我们示例应用的信令服务器,来成功连接两个用户。
第 6 章,使用 WebRTC 发送数据,包括了 RTCDataChannel 介绍,以及它是如何用于两个对等体之间的原始数据发送的。这一章通过为客户添加文本聊天来详细说明我们的示例。
第 7 章,文件共享,通过观察如何在两个对等体之间的共享文件,阐述了发送原始数据的概念。这将展示音频和视频共享以外的 WebRTC 的许多用途。
第8章,高安全性与大规模优化,包括高级的主题,比如如何提供一个大规模的WebRTC应用程序。我们还关注安全和其他公司使用的性能优化。
附录,自测题答案,包括每一章最 后自测题的答案。
你需要准备什么
本书中所有的例子都是建立在 web 标准上的。由于 WebRTC 规范是相当新的,建议运行示例时使用更新过的浏览器,优先使用最新的 Firefox 和 Chrome 浏览器。
所有的服务器代码均使用 Node.js 编写。Node.js 框架大多数在 Windows、Linux 和 MacOSX 的机器内运行。
你可以使用任何支持 JavaScript 和 HTML 代码的文本编辑器。
这本书是写给谁的
你应该有一些使用 HTML 和 JavaScript 构建 web 应用程序的经验。也许,你现在正在构建应用程序,或有一个利用用户间音频和视频交流力量来构建新的应用程序的想法。你可能还需要通过在用户之间转移高性能数据来实现应用程序。
你应该牢固地掌握编程概念和网络基础,但是这本书是写给新入门的网络工程师的。提到的概念很深入,并且是一点一点地深入,而不是一开始就进入高级话题。你可能完不知道 WebRTC 或者只听说过一点,而且想学习实时通信的内部工作原理。