关键词:WebRTC服务器,信令的作用,信令交换,会话描述协议
一、WebRTC一对一
1.1 WebRTC服务器
浏览器与浏览器通信,至少有两个方面需要服务器来做,如下:
1) 浏览器之间交换建立通信的元数据(信令)必须通过服务器
2) 穿越NAT和防火墙
1.2 信令的作用
通过一系列的信令来建立浏览器之间的通信。通过信令交换的内容如下:
a)用来控制通信开启或者关闭的连接控制消息
b)发生错误时用来彼此告知的消息
c)媒体流元数据,比如像解码器、解码器的配置、带宽、媒体类型等等
d)用来建立安全连接的关键数据
e)外界所看到的的网络上的数据,比如IP地址、端口等
在建立连接之前,浏览器之间显然没有办法传递数据。所以我们需要通过服务器的中转,在浏览器之间传递这些数据,然后建立浏览器之间的点对点连接。但是WebRTC API中并没有实现这些。
1.3为什么WebRTC不去实现信令交换?
不去由WebRTC实现信令交换的原因很简单:WebRTC标准的制定者们希望能够最大限度地兼容已有的成熟技术。具体的连接建立方式由一种叫JSEP(JavaScriptSession Establishment Protocol)的协议来规定,使用JSEP有两个好处:
a)在JSEP中,需要交换的关键信息是多媒体会话描述(multimedia sessiondescription)。由于开发者在其所开发的应用程序中信令所使用的协议不同(SIP或是XMPP或是开发者自己定义的协议),WebRTC建立呼叫的思想建立在媒体流控制层面上,从而与上层信令传输相分离,防止相互之间的信令污染。只要上层信令为其提供了多媒体会话描述符这样的关键信息就可以建立连接,不管开发者用何种方式来传递。
b)JSEP的架构同时也避免了在浏览器上保存连接的状态,防止其像一个状态机一样工作。由于页面经常被频繁的刷新,如果连接的状态保存在浏览器中,每次刷新都会丢失。使用JSEP能使得状态被保存在服务器上。
注:信令的发出是由信令服务器进行的,常用的信令服务器有stun,ice等。
1.4会话描述协议(Session Description Protocol)
JSEP将客户端之间传递的信令分为两种:offer信令和answer信令。他们主要内容的格式都遵循会话描述协议(Session Description Protocal,简称SDP)。
2016年11月22日星期二