WebRTC 实时通信

介绍

本文档会涵盖点对点交流、视频会议等多方面:

  • 使用NAT穿透技术,如:ICE, STUN,TURN来连接远端的点
  • 发送本地音视频流到远端,或者接受远端的音视频流
  • 发送任意数据到远端的点

点对点连接

RTCPeerConnection实例允许应用程序发起与另一个浏览器的RTCPeerConnection实例的点对点连接,或者是另一个实现了该协议的终端。连接是通过交换控制信息(也叫信令协议)来建立的。一般通过服务器来交换信息,如websocket或者xhr的方式。

RTCConfiguration

RTCConfiguration定义了一系列参数,用来配置点对点连接是如何通过RTCPeerConnection建立的。

  • iceServers: RTCIceServer对象的数组,RTCIceServer结构如下
    • urls: STUN或者TURN的url的数组
    • credentialType: ICEServer的鉴权方式,默认是password(目前只有这一种类型的值,未来会扩展),如果是TURN服务器,则credential则代表密码,username代表用户名
    • username: 用户名
    • credential: 凭证信息,默认是密码
    • iceServers示例:
      [
        {urls: 'stun:stun1.example.net'},
        {urls: ['turns:turn.example.org', 'turn:turn.example.net'],
          username: 'user',
          credential: 'myPassword',
          credentialType: 'password'},
      ]
  • iceTransportPolicy: ice服务器的候选策略,