1、一对一通信模型
一对一通信中,WebRTC会先尝试两个终端之间是否可以通过P2P直接进行通信,无法通信时会通过STUN/TURN服务器进行中转;其中STUN/TURN服务器的作用在不能直连时是中继服务器,通过该服务器进行端到端之间的数据中转;当可以直连时STUN/TURN的作用就只是用于各端收集reflx类型的Candidate; 原则是尽可能让双端进行直连,这样既可以节省服务器的资源,又可以提高音视频服务器的质量;
1v1通信连接过程图解
即是端A与端B之间的Offer信息的本地存储与远端发送,从而打通双端的基本信息交换
2、通信架构分析
2.1P2P
端与端之间直接通信,适合两人通信场景,可以理解成Mesh,Mesh是标准P2P通信模式的混用
2.2Mesh方案/架构
多个终端之间共享媒体数据时需要同时向其他端发送对应的数据;
TURN Server是指支持TURN协议的服务器,扮演者一种网络中继的角色,支持将一个client的数据包透明的转发到多个其他的Client客户端
2.3图解Mesh架构图
终端浏览器之间两两相连,还分别与STUN/TURN服务器进行连接,此时STUN/TURN服务器不会进行数据中转;
单方面进行音视频数据共享时,需要将共享的数据分别发送给其他端,从而实现多人通信
优势
不需要服务器中转数据,STUN/TURN只负责NAT穿越,不需要再单独开发一套美体服务器,利用现有的WebRTC通信模型就可以实现
充分利用了客户端的宽带资源
节省服务器资源,不需要其他的数据处理和中转
基础的信令服务器还是要用的
劣势
当有过多的终端进行音视频流共享的时候,需