作者:Tsahi Levent-Levi(原文链接)
翻译:刘通
原标题:How WebRTC Works
前文链接:WebRTC是如何工作的1; WebRTC是如何工作的2; WebRTC是如何工作的3
WebRTC实现器的角度
如果你正致力于寻找一个使用WebRTC的应用的实现方法,那么下面这些是你需要处理的:
1. 客户端
2. 信令
3. NAT穿透
4. 媒体
客户端
客户端可以是浏览器,移动应用,PC应用或者嵌入式设备。
对于网页浏览器,你需要使用JavaScript开发。要么直接使用WebRTC API,要么使用现成的框架(有很多人都是从github开始着手的,确保你选择了一个很受欢迎且最近才更新的项目)。
对于移动应用程序,主要工作就是找到一个适合你的SDK。还是,在github上有 一些可用的资源,Google还给出了针对iOS和安卓的官方SDK。也有一些商业的移动端SDK也是非常出色的。
对于PC应用,大部分的工作是使用Electron完成的。还有嵌入式的方法,这意味着要么采取官方的Google WebRTC代码库,并将其移植到你有的设备上,或者自行进行开发,这两种情况都是可行的。
信令
你需要一个信令服务器。WebRTC客户端做的一件事就是调用其母体。这被用来协调你想要的任何会议。
信令服务器并不在WebRTC规范的范围内,所以怎么使是由你自己说了算的。你在github上所能找到的针对浏览器客户端的代码实际上是信令服务器的实现。
记住信令服务器可以独立于你的Web服务器存在,或者可以让它们处在同一个进程中,这都是由你决定。在任何情况下,首先要做的是检查是否已经存在了某种信令机制给你的应用提供非WebRTC功能。你可以通过该机制搭载SDP消息和其他WebRTC相关的信令。
NAT穿透
想要实现NAT穿透,你需要部署STUN/TURN服务器。
你首先需要知道有什么是坚决不能做的:
# 以为自己不需要TURN服务器
# 不用公共STUN服务器
# 不要只用一个服务器来做所有事
# 不要一上来就急着搭建一个世界级的全球服务网络。你会做到的,但是以后的事
而你需要做的事是:
# 同一个服务器中部署STUN和TURN。部署在同一个进程中。
# 使用Coturn。所有人都在用。
# 或者,从其他公司那里获得NAT穿越服务。XirSys和Twilio都是不错的选择。
媒体
如果你正准备进行群组音频和视频会话,连接PSTN或者其他网络,录音或者其他高级的功能,那么你就会需要媒体服务器。
找到适合你使用场景的东西。
有很多开源和商业的媒体服务器可供选择。他们在很多方面都有所不同。