作者:Tsahi Levent-Levi
翻译:Alex
技术审校 | 刘连响
Easy-Tech #032#
WebRTC由很多模块构成。你想了解它的工作原理吗?
WebRTC工作起来就像施魔法一样。你将浏览器指向一个URL,让其他人也将他的浏览器指向一个URL,然后,你们就能看到彼此了。是不是很酷?
如果你了解WebRTC内部的工作原理,你就会知道那里发生了很多事。
我将从不同角度向大家解释WebRTC的工作原理。最后,它们将向你呈现出WebRTC的完整面貌。
WebRTC的基本概念
下面是我介绍WebRTC时首先强调的两点:
-
WebRTC原生支持Web浏览器进行实时通信
-
WebRTC是使用JavaScript API的媒体引擎
WebRTC是一种直接在Web浏览器内部实现实时通信(语音、音频和任意数据)的方法,无需任何插件和下载。
从另一方面看,WebRTC只是一个媒体引擎,其上层是JavaScript API,每个人都知道如何使用它(尽管浏览器实现依然各不相同)。所以从这一角度,我就不多做解释了。
现在,让我们从浏览器的角度开始了解真正令WebRTC独一无二的原因。
如果到现在为止,当你想到Web应用的时候,呈现在你眼前的是客户端和服务器:
你将浏览器作为客户端,它连接服务器后,并向其请求内容(让我们称之为请求)。服务器对请求发送响应。这里我们先抛开WebSocket,但它们的内在原理是一样的。如果我想给正在使用浏览器的朋友发送一条信息,这条信息需要先来到服务器,从那里再发送给我的朋友。这与现实生活中的邮局非常相似。
WebRTC的交互流程和上述的流程不大一样。
虽然我们仍然需要以某种方式从一个浏览器向另一个浏览器发送信令(以便我们能够相互定位),但一旦发送信令结束,我们就可以直接在两个浏览器之间发送消息——而Web服务器永远不会获取到这些消息。是不是像魔法一样?
这也是WebRTC被称为点对点技术(简称为P2P)的原因。因为浏览器之间可以直接通信。
媒体和信令的分离
在加载网页时,我们已经习惯了浏览器为了渲染页面要去获取100种不同的资源,这些资源来自各种不同的服务器:页面的托管服务器、保存静态文件的CDN和一些第三方网站。也就是说,这些文件主要被分为三类:
-
HTML和CSS,构成了网站及其形式的主要内容
-
JS,通常运行网站的交互部分
- <