webrtc 網絡原理

本文章來自
https://www.html5rocks.com/en/tutorials/webrtc/infrastructure/
不一一翻譯,撿我認爲重要的記錄下來。

1.會話的發起機制,webrtc沒定義,需自行定義。可參考網上的很多在線例子,房間號的形式實現。

2.信令的交換機制,webrtc沒定義,也是自行定義。主要完成網絡ip地址等網絡信息交換,媒體信息sdp交換。整個流程遵循這個JSEP, the JavaScript Session Establishment Protocol

3.信令交互流程大概如下:

  • offer 提供一個sdp給另外一方
  • answer 另外一方回覆一個sdp
  • candidates 整個流程中雙方發送自己的外網地址信息給對方,並持續進行嘗試連接,看意思是發起方在offer完後就開始發送candidate給對面,由發送方嘗試連接?

4.信令服務的構建可通過以下傳輸技術:

  • EventSource API 單向web server到client的異步傳輸,可通過其他手段(XHR?)構建雙向信息通道。
  • WebSocket全雙工完美兼容。
  • Google App Engine Channel API
    大規模的可參考:
  • XMPP
  • ZeroMQ
  • 有商業雲直接用websocket

5.有一個基於node,socket-io的完整例子

6.RTCDataChannel 可在連接完成後代替信令機制以減輕服務壓力

7.現成的信令服務器

8.成熟的供應商
vLine, OpenTok and Asterisk.

9.在信令過程後,使用ice打洞

10.ice機制原理

  1. 先使用網卡本地地址
  2. 不行使用stun
  3. 再不行就turn轉發
    所有turn支持stun
    ice測試頁面

11.stun原理
主要是用戶發送包到服務器,服務器返回你的公網地址,然後你通過信令機制發送給你要連接的對方。

12.turn原理
純轉發

13.webrtc多播
Multipoint Control Unit (MCU)
開源mcu:
licode
mantis

14.跟Voip,電話系統,視頻會議系統結合

  • SIP VoIP和視頻會議使用的信令協議,需要代理服務器來處理信令轉換,但一旦建立後能直接通過p2p傳輸音視頻SRTP
  • PSTN 公共電話交換網絡, 代理服務器一樣要
  • XMPP im系統,libJingle是webrtc的前身,就是在xmpp上的拓展,爲了音視頻通訊,處理手段同上

完成以上轉換可用的庫(某些直接在客戶端使用也行吧):

  • sipML5 :一個開源的javascript sip 客戶端
  • jsSIP: javascript SIP 庫
  • Phono :開源javascript phone api,作爲一個plugin?
  • Zingaya:一個嵌入式phone widget
  • Twilio:音頻 和 信息
  • Uberconference:會議庫
  • webrtc2sip : 一個網關
  • OpenBTS:是一個基於軟件的GSM接入點,允許標準的GSM兼容手機作爲SIP端點在IP電話(VoIP)網絡中使用
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章