具体描述
WebRTC 是一个支持网络浏览器进行实时语音对话或视频对话的软件架构。
《Learning WebRTC 中文版》使用形象的案例介绍,逐步深入地阐述了WebRTC 的幕后工作原理。通过阅读本书,读者可以快速、有效地掌握创建一个WebRTC 应用所必需的知识,包括获取用户设备信息、创建WebRTC 应用的客户端和服务器、连接用户并发送数据、文件共享、数据信息安全和性能优化。
《Learning WebRTC 中文版》适合有一定HTML 和JavaScript 经验,希望了解WebRTC 并想学习实时通信工作原理的开发者参考阅读。
作者简介
Dan Ristic
他是一位前端工程师,同时也是一名开放网络(Open Web)布道师。他致力于研究前沿技术,并以独到的创见推进Web 领域的发展。他曾在位于美国亚利桑那州的先进技术大学(University of Advancing Technology)研习工程知识,对Web 领域满怀热情,离开后便一直从事Web 应用开发相关的工作。
他目前在旧金山地区生活工作,在索尼国际娱乐网络公司担任高级软件工程师一职,负责管理前端应用架构,为数百万用户提供PlayStation 应用商店服务。业余时间里,他喜欢徒步旅行、探险、开发项目或出席一些活动。
目录信息
1 开启WebRTC 之旅 1
音视频通信领域的发展现状 1
在web 平台传输音频和视频 2
捕捉摄像头和麦克风 3
音频及视频的编解码 3
传输层 4
会话(Session)管理 4
创建web 标准 5
浏览器支持 5
Chrome、Firefox 和Opera 的兼容性 5
安卓操作系统的兼容性 6
苹果操作系统兼容性 6
IE 的兼容性 6
在浏览器中使用WebRTC 6
支持WebRTC 的应用 7
自测题 7
小结 8
2 获取用户媒体 9
访问媒体设备 9
配置静态服务器 10
创建我们的首个媒体流页面 11
限制媒体流 14
限制视频捕捉 15
多设备处理 18
创建一个拍照室应用 20
修改媒体流 23
自测题 25
小结 26
3 创建简单的WebRTC 应用 27
理解UDP 传输协议和实时传输 27
WebRTC API 30
RTCPeerConnection 对象 30
信号传递和交涉 31
会话描述协议(SDP)33
找到一条清晰的路线到其他用户 35
创建一个基本的WebRTC 应用 38
创建一个 RTCPeerConnection 38
建立SDP OFFER 和返回 43
寻找ICE 候选路径 44
加入流和打磨 46
运行你的第一个WebRTC 应用 47
自测题 51
小结 52
4 创建信令服务器 53
构建信令服务器 53
搭建开发环境 55
获得一个连接 56
测试我们的服务器 58
识别用户59
发起通话 62
呼叫应答 63
处理ICE 候选路径 64
呼叫挂断 65
完成信令服务器 66
在实际应用中发送信令 70
WebSockets 的困境 70
连接其他服务 71
自测题 72
小结 73
5 把客户端连接到一起 75
客户端应用 75
创建页面 77
获取一个连接 79
登录到应用程序 81
开始一个对等连接 82
发起通话 85
检测通信 87
挂断电话 88
一个完整的WebRTC 客户端 89
改进应用程序 95
自测题 95
小结 96
6 使用WebRTC 发送数据 97
流控制传输协议和数据传输 97
RTCDataChannel 对象 99
数据通道选项 101
发送数据 101
加密与安全 102
添加文字聊天 103
用例 107
自测题 108
小结 109
7 文件共享 111
使用文件API 拾取文件 112
准备我们的页面 114
获取对文件的引用 121
文件分块 122
使文件分块可读 124
文件读取与发送 126
在“另一端”组合文件块 128
向用户展示进度 130
自测题 131
小结 132
8 高安全性与大规模优化 133
保护信令服务器 133
使用编码 134
使用OAuth 提供器 134
支持移动设备 136
网格网络简介 138
网格类型 139
网格网络的缺陷 143
更多用户的视频会议 144
视频会议的未来 146
自测题 146
小结 147
附录 自测题答案 149
· · · · · · (收起)
读后感
用户评价
这本书的排版和插图是另一个让我印象深刻的点。对于技术书籍来说,清晰的图示比冗长的文字描述有效得多。书中大量的流程图和架构示意图,将那些抽象的网络交互过程具象化了。例如,描述数据包如何在不同网络层之间传输时,那些精美的时序图和数据流向图,让我瞬间豁然开朗。作者非常擅长使用简洁的图形来概括复杂的状态转换。而且,书中很多代码示例都是经过精心挑选和优化的,它们不是那种为了凑字数而堆砌的冗长代码块,而是能够精准地命中某个技术难点的最小可复现示例。我特别欣赏作者在每一个关键概念之后都会附带的“实践提示”或者“注意事项”小节,这些内容往往是作者多年经验的结晶,能够帮助读者避开许多初学者常犯的陷阱,比如在移动端进行功耗管理、处理浏览器权限问题,或者在 Web Worker 中进行耗时计算的技巧等等。这些细节体现了作者对实际开发痛点的深刻洞察。
阅读这本书的过程中,我最大的感受是作者在技术深度上把握得恰到好处。很多书籍在涉及 SDP(会话描述协议)和 ICE(交互式连接建立)时,往往只是泛泛而谈,或者直接扔给读者一堆晦涩难懂的文本描述。然而,本书在这两个核心环节的处理上,展现出了非凡的功力。它不仅详尽地解释了 SDP 的结构和在信令交换中的作用,还结合实际的信令服务器交互示例,演示了如何解析和修改 SDP 属性,这对于调试实际项目中的连接失败问题至关重要。更令人赞叹的是 ICE 部分的讲解,它没有止步于 STUN 和 TURN 服务器的定义,而是深入剖析了候选地址的发现过程、优先级排序机制,甚至还提及了复杂网络环境下的 NAT 穿透的种种挑战和应对策略。我感觉自己仿佛坐在一位资深架构师旁边,他不仅告诉你“该做什么”,更重要的是解释了“为什么这样做是最好的选择”。这种对底层机制的透彻剖析,使得我不再满足于仅仅调用 API,而是开始理解 API 背后的魔法是如何运作的。
这本书的封面设计简洁明快,黑白灰的配色给人一种专业而沉稳的感觉,正好符合它深入技术内核的定位。当我第一次翻开它的时候,我立刻被它清晰的章节划分和详实的目录所吸引。它不像市面上一些同类书籍那样堆砌概念,而是非常有逻辑地引导读者进入 WebRTC 的世界。作者在开篇部分花了大量篇幅来解释为什么我们需要 WebRTC,以及它在当前互联网应用生态中的战略地位,这一点非常重要,因为它为后续的学习打下了坚实的理论基础。接着,它没有急于深入到复杂的代码实现细节,而是花了足够的时间去剖析底层的媒体流处理流程,比如音频和视频的采集、编码、传输以及在接收端的解码和渲染过程。这种“先宏观后微观”的叙事方式,极大地降低了初学者的入门门槛。特别是对于那些已经掌握了一些基础 Web 开发知识,但对实时通信技术感到陌生的开发者来说,这本书简直是量身定制的“地图”。它仿佛带着你进行了一次精心规划的徒步旅行,每一步都有清晰的指示牌,让你确信自己正朝着正确的方向前进。
坦率地说,这本书的学习曲线是存在的,它绝非一本可以囫囵吞枣的“速成指南”。要真正掌握书中的精髓,需要投入相应的时间去消化和实践。然而,正是这种需要投入精力的过程,换来了扎实而深刻的理解。书中的练习题或思考题(虽然不是明确的习题集,但其结构暗示了需要主动实践)引导我去搭建自己的测试环境,去亲手编译一些底层组件的示例,这极大地巩固了我的学习效果。每一次成功地通过书中的指导搭建起一个点对点连接,都带来了巨大的成就感。对于那些真正渴望成为 WebRTC 领域专家的读者来说,这本书提供了一条清晰、高效且权威的学习路径。它不仅教会了我“如何做”,更重要的是塑造了我思考实时通信问题的正确思维框架,这是任何技术书籍所能给予的最高赞誉。
随着阅读深入,我发现这本书的视野并不仅仅局限于浏览器端的 JavaScript API 调用。它勇敢地迈向了更广阔的领域,比如服务端的集成以及跨平台的考虑。作者在专门的章节中探讨了如何使用 Node.js 或者 Python 搭建信令服务器,这对于构建端到端的实时通信系统是不可或缺的一环。更让我感到惊喜的是,它还触及了 WebRTC 在物联网(IoT)和边缘计算中的潜在应用场景,虽然只是蜻蜓点水,但无疑为读者打开了新的思路。这种前瞻性的视角,让这本书的价值超越了单纯的技术手册,更像是一份行业趋势分析报告。对于希望构建专业级、高可靠性实时通信产品的工程师而言,这本书提供的多角度审视是极其宝贵的。它教会我如何从系统的整体架构角度去思考 WebRTC 的部署和维护,而不是孤立地看待客户端的实现。
有点老了,很多api都不能用了,可以参考这边的demo https://github.com/webrtc/samples
优点:WebRTC JS层基本都简介了一遍,入门还可以。 缺点:贵,凑字数。 P45, 代码缩进混乱不堪。 代码可以沾,但是同一段代码能不能别沾太多次,明显凑页数,定价这么高不好意思么?
内容少,体量大,可以学到一些东西。
内容比较浅,感觉一般啦
比较浅显,只介绍了WebRTC的API(较旧)和h5结合的一点demo。不过,做为一个前端,也没办法深入了解什么通讯技术那块…所以总体来说还是不错的一本书