如何创建视频聊天应用程序?(下)

3. STUN服务器的用途?

即NAT会话穿越应用程序。双方都至少要了解其另一端的IP地址和分配的UDP端口。

无论使用哪种架构,我们都需要信令服务器来进行注册和显示状态。TURN服务器可以帮助我们遍历网络,并确保内部IP地址可以映射到外部公共ip地址。

STUN如何运作?

点击此处,你可以随时更新或编辑。

现在你能看到浏览器使用STUN服务器请求你的公共IP地址,平时我们是看不见的。这让我学到,魔术从来都不是真正的魔术,幕后有千变万化。如果你想学习魔术,就必须了解背后的这些事。

4. 什么是TURN服务器

中继NAT遍历是一种用于中继网络流量的协议。有时由于防火墙和一些网络相关的工具(也就是NAT),在你使用STUN服务器,设法检索远程对等方的公共IP地址时,你需要一个能公开访问网络,做你媒体中继的一个TURN服务器,这个过程有点像一个中间人帮你传递信息。

5. 如何扩展?4种关键架构供你选择

  • Mesh

在端对端的电话会议中共3个客户端,有2个连接会进行加密建立。各方都能保持联系。

  • Forwarding(转发)

选择性转发单元在会话中充当智能媒体中继的角色。每个客户端都会连接到SFU一次,以发送媒体。除自己以外的客户端都会再发送一次。这样每个客户端就有n个单向连接(n是已连接客户端的数量)了。尽管此体系结构的连接总数为n的平方,但客户端在连接初始化时仅加密一次,从而减轻了设备本身,尤其是手机的压力。

转发需要其他服务器基础结构,例如SFU等。但其效率很高。只要不激活记录或对数据进行解码,SFU不会尝试解密数据包。

  • Mixing(混合)

混合操作依赖于多点控制单元(MCU),该单元在会话中充当高功率媒体混合器的角色。如果每个客户端连接一次MCU,无论有多少客户端在连接,其都只需要处理一个从服务器发送和接收媒体信息的双向连接。

像转发一样,加密和上传也仅执行一次。现在下载和解密也是如此。这种方法在客户端上效率最高,但从服务器角度来看效率最低,因为解码、混合、编码和打包的解包操作完全要在服务器上执行,操作量很大,需要大量服务器资源才能实时完成。

对于有大量活跃用户的应用程序(例如网课)或设备特别受资源限制(例如带宽)的情况,大家可以考虑使用此方法。但这种体系结构要花费一些服务器成本。

  • Hybrid(混合)

顾名思义,混合体系架构是Mesh、Forwarding和/或Mixing的组合。你可以根据需求为参与者创建会话。

  • 若是简单的两人通话,mesh设置非常简单,服务器资源需求小。
  • 若是小组会议、广播和实时活动,Forwardin最合适。
  • 若是较大的小组会议或电话集成,Mixing是最合适的的开放性选择。

如何使用Testrtc测试WebRTC

目前来看,WebRTC应用在进行拓展时总会出现问题,同时消耗大量数据。如果你打算扩展自己的webRTC应用,你需要考虑适当的体系架构,以及数据流量问题。

在有500名参与者的压力测试中,我们将其分成几组。其中,有5名参与者仅运行了6.5分钟。但该服务器实际上不到10分钟内就双向传输了52GB的媒体流量。

6. 资源

点击这里,你可以免费获取在webRTC实现中使用的STUN服务器,

我找到了一个讲述较全的youtube视频来帮你了解WebRTC的工作方式。webrtc相关的这些youtube视频都好多年了。WebRTC都有7年历史了,而我现在才掌握了这项技术。希望这篇文章能让你也了解这个“老”技术!

相关阅读:如何创建视频聊天应用程序?(上)

文章地址:https://blog.phuaxueyong.com/post/2020-06-15-how-to-make-a-video-chat-app/

原文作者:JOSHUA PHUA

填写常用邮箱,接收社区更新

WebRTC 中文社区由

运营