WebRTC (1):基本介紹

前言
WebRTC API 小檔案
- 全名:Web Real-Time Communication
- 使用目的:達成瀏覽器點對點即時通訊
- 使用優點:低延遲
- 通訊方法:P2P(Peer-toPeer)
- 通訊內容:聲音、影像、其他資料
- 維護團隊:Google WebRTC
透過 WebRTC 即時通訊技術,就可以實現瀏覽器視訊通話的功能拉!目前各家瀏覽器對 WebRTC 的支援度高、在社群上的討論度也高,因此開發者想快速上手絕對沒問題;若是應用規模較大的專案,還會涉及到多人應用架構(如 SFU、MCU)、伺服器支援(如 TURN)、串流編解碼優化等議題,自己還在努力鑽研中,以下就先以最基本的「雙人連線」來介紹 WebRTC 的服用方式。
瀏覽器的 P2P 連線過程

假設今天要視訊通話的雙方是 A 瀏覽器和 B 瀏覽器(上圖中稱作 Peer):
1. A、B 瀏覽器的使用者都允許瀏覽器獲取裝置的媒體權限瀏覽器會利用 Web MediaStreams API 取得本機裝置的「媒體權限」和「串流資料」,例如視訊影像及麥克風聲音等;若使用者不允許獲取權限也不影響下面流程,等成功連線後,只要使用者願意開放權限,就能立即開始視訊。
2. 信令服務器 (Signaling Server) 轉發裝置資訊A 發起連線資訊給 B,B 收到後也將自己的資訊回應給 A。此時雙方尚未建立 P2P 連線,因此需要搭配其他聯絡方式(如 WebSocket),才能和遠端交換連線資訊,這個協助轉發資訊的角色就稱為信令服務器,若是資訊交換成功才會往後建立 WebRTC 的 P2P 連接。
3. 雙方建立 P2P 連接彼此會利用 candidate 互相協議最佳的連線方式,若是協商成功就能串起連線。
4. 連線成功,雙方利用 WebRTC 的「資料通道」交換串流資料這時 B 就能聽到 A 說:「嘿,你好!我們開始今天的談話吧!」。
WebSockets 及 WebRTC 的關係

從上面流程看到,WebRTC 需要仰賴其他通訊方式進行資料交換,目前的主流選擇是 WebSocket。剛開始接觸 WebRTC 時會被這兩個技術混淆,為什麼不直接使用 WebSockets 進行即時通訊就好呢?
除了 WebRTC 就是專門用來支援視訊的傳輸、編解碼等技術外,它的核心連線方式「點對點連線」,速度會比仰賴第三方服務器傳輸的方式快,因此在「即時」層面上,WebRTC 大大勝出。
結語
大概了解 WebRTC 概念及背景後,後續預計再用兩篇文章介紹連線流程以及容易遇到的問題。