这篇文章会教你怎么搭建信令服务,和用STUN/TURN服务去做nat穿透。另外,我们会解释WebRTC是怎么做到多端通话的。以及如何和VoIP/PSTN(电话)建立通话。
如果你对WebRTC还没有基础,我们强烈建议你先看下Getting Started With WebRTC。
一.什么是信令服务(Signaling)?信令是一个协调沟通的过程,为了让一个WebRTC应用发起一个“通话”,客户端间需要交换以下信令信息:
1.发起和关闭一个通话的控制信息;
2.错误信息;
3.媒体元数据,比如编码解码设置,带宽和媒体类型;
4.Key数据,用于确保安全通讯;
5.网络数据,比如主机在外网下的IP地址和端口。
客户端的信令处理需要一种来回传递信息的方法,这种机制没有被WebRTC定义,你需要自己去创建它。下面我们将描绘几种构建信令服务的方法。
在此之前,先讲几个概念……为什么WebRTC没有定义信令?为了避免冗余和最大化兼容已经确立的技术,WebRTC没有指定信令的方法和协议。
-------------------------------
(WebRTC设计思想是完全指定和控制媒体层,但是让signaling层尽量脱离应用,原因是不同的应用可能会使用不同的协议,比如已经存在的SIP或者Jingle呼叫协议等。
这份协议中,需要交换的关键信息是多媒体会议的描述信息,包括在媒体层确定必要的传输方式和 媒体配置信息)
------------------------------------------------
JSEP的结构同样避免了让浏览器保存状态信息,如果让浏览器成为一个保存信令状态的机器,会出现一个问题,
就是每次当页面重载的时候,信令会丢失。所以更好的方案是用服务器保存信令状态。
如下图所示,视频编码流程是从VideoBroadcaster回调VideoStreamEncoder的OnFrame开始的。