为什么开发WebRTC与web开发不一样?(下)

作者:Tsahi Levent-Levi(原文链接

翻译:刘通

原标题:Why Developing With WebRTC is Different than Web Development?

上一篇:为什么开发WebRTC与web开发不一样?(上)

#6 NAT穿越会伴随你的工作生涯

我们都知道网络是有NAT和防火墙的。这不是什么新鲜事,但是如果你是一个web开发者,那么NAT和防火墙可能并没有给你找过任何麻烦。

这是因为对于“普通”的网络,浏览器会连接到服务器。并且作为我们当今网页的主要概念,NAT和防火墙知道会发生这些,并且允许其发生。

端到端连接,是像WebRTC那样直接在浏览器直接运行。而且连接是使用UDP的(再说一遍,在浏览器中通常都不用UDP连接),而这对于防火墙和配置防火墙的IT人员来说就是不允许的了。

webrtc-vs-web21

对于WebRTC来说,这意味着我们需要额外添加STUN/TURN服务器。有些时候你会听到一个词叫做“ICE”。ICE是一个算法而不是一个服务器,它会用到STUN和TURN。STUN和TURN是用来进行NAT穿透的两个协议,它们两个每个都会使用自己的服务器。通常来说,STUN和TURN服务器都会用同一个代码实现,并且使用一个进程部署。

WebRTC会尽其所能确保会话可以成功连接。但是直到今天,它所做的工作也不够。有很多时候会话都无法正常连接—矛盾的是,这恰恰是配置防火墙的那个人的工作职责。

#7 缩放服务器的范围大小是可笑的

对于WebRTC来说,服务器缩放与普通网络来说有些不同。

两个主要原因如下:

1. 数量通常来说会更小。web服务器可以处理5位连接或者更多,而WebRTC处理3位的连接就已经很困难了。这对于进行HD视频是一个非常大的消耗。

2. WebRTC需要保持有状态性。服务一个连接以及重启连接通常都是很明显的—比其他相关网页要多的多。这使WebRTC的可用性,容错性,更新和相似的工作上都更难管理。

你如果想搞清楚如何改变服务器的范围,你就需要搞懂每个WebRTC服务器是如何工作的才行。

#8 带宽是昂贵的资源

对于网页来说事情相对简单。网页的平均大小每年都在上升。在2016年的时候达到了2.3MB以上。但是这个网页是从不同服务器上提取的不同资源建成的。而某些可以缓存到本地浏览器上。

一个5分钟的2Mbps HD视频要占据75MB大小的空间。

如果你只是进行1:1视频通话,10%的TURN中继系数—如果每天进行1000通,平均每通5分钟,那么每天就会占据15GB的TURN服务器带宽。你很可能一天会打多个电话,而且通话时间也有可能比5分钟要多。

如果使用媒体服务器来进行群组通话或者录制的话,这个带宽消耗会更高。

当你在考虑你的商业模型时,一定要考虑带宽的消费。

#9 地理位置是媒体传输的一切

对于大多数情况和大多数服务俩说,你都可以与运行数据的数据中心很远。

我的网站主机可能在美国的某个地方,然后它会连接到CDN服务商来管理静态文件。我甚至都没有操心过这件事,而且整体质量还不错。

但是在实时直播媒体领域可就不是这么一回事了。

从纽约到巴黎会用掉100ms或者更多的时间,作为实时传输,我们希望可以尽可能多的减少这个延迟。

webrtc-vs-web22

想象两个人在巴黎使用WebRTC进行通话,但是通话信息是通过设在纽约的TURN服务器进行中继的。都不用提丢包率高的问题,这么高的延迟就已经够受的了。

WebRTC来说,即使是很小范围的服务,可能也需要全球部署基础服务器。

#10 不同的浏览器的表现情况不一样

作为一个网页开发人员,你可能处理过因为浏览器在HTML和CSS时工作的不一样的问题。

对于WebRTC来说也是这样。差别就是从事WebRTC会更经常的遇到这种问题,而且会把事情分成两个级别:

1. API表现—不是所有的浏览器都支持同一套API。

2. 网络表现—WebRTC的价值在于你可以在两个浏览器之间进行通话。所以如果两个浏览器不一样的话,你就有可能不能顺利的建立起连接。不同浏览器处理SDP的方式不一样,他们支持的编解码器也有可能会不一样,等等。

随着时间的推进,这个问题应该会得到解决。浏览器供应商会将注意力从添加功能上变成确保所有功能都可以跨浏览器交互。

但是在那之前,我们作为开发者就需要不断追着浏览器跑,并且做好任何突发问题的准备。

#11 你比你想的其实知道更多

WebRTC主要跟VoIP有很多关联。所以这就代表了VoIP开发者在理解WebRTC上要比你领先很多。

他们的问题是他们与你所受到的训练和学习是不一样的。他们学习的时候被教说一个通话中存在一个主叫和一个被叫。然后你需要保持一个通话,传输一个通话等等……他们所受到的训练有太多是关于电话的,而对通信没有什么作用。

而你不是这么学出来的。你不需要去忘记一些东西。我在整个的学习过程中就必须要去忘记掉很多以前学的知识。

这意味着你已经知道了WebRTC中很重要的一件事,那就是没有哪种会话的创建是对的或者错的。而且你在明白到底如何使用它之前可以随意进行实验,尝试,甚至破坏。这是非常有利的一点。

WebRTC 中文社区由

运营