WebRTC 的故事:從 Flash 到瀏覽器即時通訊的革命
在 WebRTC 出現之前,要在瀏覽器上進行視訊通話,簡直是一場惡夢。
你需要安裝 Flash Player、Java Applet,或是下載各式各樣奇怪的 ActiveX 插件。即使你裝好了,你的朋友可能因為版本不對而無法看到你的畫面。這是一個被「插件 (Plugins)」統治的黑暗時代。
直到 2011 年,Google 的一項關鍵收購案,徹底改變了這一切。
一、 關鍵轉折點:Google 收購 GIPS
故事的起點要回到 1999 年,瑞典有一家名為 Global IP Solutions (GIPS) 的公司。他們專注於開發高品質的 VoIP (Voice over IP) 與視訊處理技術,並將即時通訊元件授權給多家網路通訊服務。
GIPS 擁有當時世界上最頂尖的即時音訊編解碼與回音消除技術,但這些技術是封閉且昂貴的。
6820 萬美元的豪賭
2010 年 5 月 18 日,Google 宣布以 6820 萬美元 收購 GIPS。
當時業界還在猜測 Google 是否要推出自己的 Skype 殺手級應用。但 Google 在一年後的 2011 年 5 月,將 GIPS 的核心技術 開源 (Open Source),並命名為 WebRTC (Web Real-Time Communication)。
Google 的目標很明確:「讓瀏覽器具備原生的即時通訊能力,不需要任何插件。」
二、 雙巨頭的標準化之路:W3C 與 IETF
WebRTC 要成功,不能只有 Chrome 支援,必須成為 Web 標準。這涉及到兩個巨大的標準化組織:
- IETF (Internet Engineering Task Force):負責制定底層的 通訊協定。例如:封包要怎麼送?加密要用什麼格式 (DTLS/SRTP)?NAT 該怎麼穿透 (STUN/TURN)?
- W3C (World Wide Web Consortium):負責定義瀏覽器的 JavaScript API。例如:
getUserMedia怎麼寫?RTCPeerConnection怎麼呼叫?
這是一場長達 10 年的馬拉松。
從 2011 年釋出草案開始,經歷了無數次的 API 修改與架構調整。直到 2021 年 1 月,W3C 正式宣布 WebRTC 1.0 成為 W3C 推薦標準 (Recommendation);而在同一個月,IETF 也發布了 RFC 8825,整理 WebRTC 使用的通訊協定與架構。
這標誌著 WebRTC 正式成熟,成為網路基礎建設的一部分。
三、 WebRTC 改變了什麼?
WebRTC 的出現,將即時通訊的門檻從「應用程式等級」降到了「網頁等級」。
Before & After
| 特性 | WebRTC 之前 (Flash/Plugins) | WebRTC 時代 |
|---|---|---|
| 安裝需求 | 需要安裝插件或專用軟體 | 零安裝,打開瀏覽器即用 |
| 通訊延遲 | 常依賴插件與專有架構 | 支援低延遲直連或媒體伺服器架構 |
| 開發方式 | 需依賴插件或特定私有 SDK | 提供標準化 JavaScript API |
| 安全性 | 插件漏洞多,安全性參差不齊 | 媒體擷取需安全來源,傳輸強制加密 |
| 生態系 | 封閉生態 | 開放標準,跨平台 (PC/Mobile/IoT) |
四、 核心三劍客
WebRTC 雖然底層複雜,但對開發者來說,主要由三個核心 API 組成:
MediaDevices.getUserMedia():負責取得攝影機與麥克風權限,並回傳MediaStream。- RTCPeerConnection:這是 WebRTC 的「心臟」。負責建立 P2P 連線、處理 NAT 穿越、頻寬偵測與編碼協商。
- RTCDataChannel:這是一條「萬能通道」。除了影音,你還可以傳送任意的二進位資料(檔案、遊戲狀態、聊天訊息),而且同樣享受 P2P 的低延遲與加密特性。
總結
WebRTC 將即時影音能力帶進標準化的 Web API。建立基本通話的門檻降低了,但穩定的產品仍需要處理信令、TURN、裝置相容性、品質監控與多人媒體架構。
在這個專題中,我們將不會只是紙上談兵。我們將這段歷史化為程式碼,從零開始打造屬於你自己的即時通訊應用。
| 關鍵字 | 說明 |
|---|---|
| GIPS | Global IP Solutions,WebRTC 的前身技術擁有者。 |
| P2P | Peer-to-Peer,點對點直接傳輸,不經伺服器轉發 (理想狀況)。 |
| Signaling | WebRTC 規範未指定應用層信令的傳輸方式,需自行交換 SDP 與 ICE。 |
TIP
WebRTC 的價值不限於視訊會議,也涵蓋遠端協作、客服、教育、遊戲、即時資料交換與媒體處理。學習時應同時理解瀏覽器 API 與底層網路限制。