iT邦幫忙

2021 iThome 鐵人賽

DAY 14
0
Software Development

新手也能打造網路電話系統-WebRTC入門與活用系列 第 14

Day 14 - 觀念篇 - WebRTC協商流程

本篇要介紹在WebRTC協商流程,有了這個流程我們才能成功進行WebRTC通話。WebRTC協商流程是指雙方建立WebRTC通話前的必要過程,過程中會傳遞一些重要的資訊讓彼此進行協商,使雙方可進行連線並通話。

協商流程是Day3~Day6觀念篇的實際應用過程,其內部詳細定義WebRTC協商應處理的事項,例如:SDP交換、ICE候選人交換、媒體流交換等,使端點之間可得知彼此的通話類型、支援的編解碼器、網路位址、網路頻寬、傳輸協議、會談時間及ICE候選人等基本資訊,並在連線成功後傳遞媒體流數據,以達成多媒體即時通訊的目的。

協商流程大致劃分成三個部分:

  1. SDP交換:使彼此可取得對方的通話類型、編解碼器、網路頻寬等,以選擇適合的通訊方式。
  2. ICE候選人交換:使彼此可取得對方的連線資訊,以利進行對等連線。
  3. 媒體流交換:使彼此可取得對方的音訊與視訊數據,並將其呈現給使用者。

SDP交換

協商流程的一開始要先進行SDP的交換,而交換的過程會使用Socket Server傳遞資訊。

  1. UserA初始化RTCPeerConnection,並對其設定自己的媒體流,接著建立Offer類型的SDP,並將其設定為本地端的SDP。
  2. UserB初始化RTCPeerConnection,並對其設定自己的媒體流。
  3. UserA將Offer類型的SDP藉由Socket Server傳遞給UserB。
  4. UserB將Offer類型的SDP設定為遠端的SDP,接著建立Answer類型的SDP,並將其設定為本地端的SDP。
  5. UserB將Answer類型的SDP藉由Socket Server傳遞給UserA。
  6. UserA將Answer類型的SDP設定為遠端的SDP。

ICE候選人交換

交換完SDP後,我們需要向ICE Server取得候選人資訊,並藉由Socket Server傳遞給對方,使雙方可進行STUN或TURN協議。

  1. UserA向ICE Server取得自己的ICE候選人資訊。
  2. UserA將自己的ICE候選人資訊藉由Socket Server傳遞給UserB。
  3. UserB將UserA的ICE候選人資訊儲存。
  4. UserB向ICE Server取得自己的ICE候選人資訊。
  5. UserB將自己的ICE候選人資訊藉由Socket Server傳遞給UserA。
  6. UserA將UserB的ICE候選人資訊儲存。

媒體流交換

交換完ICE候選人後,WebRTC內部會匹配候選人的資料,來找出適合的連線資訊,並選擇用STUN或TURN協議進行媒體流傳遞,此時雙方就能獲得彼此的MediaStream,並將其渲染於元件後呈現給使用者。


上一篇
Day 13 - 應用篇 - 建構WebSocket聊天室(Server端)
下一篇
Day 15 - 應用篇 - 建構WebRTC網路電話(架構總覽)
系列文
新手也能打造網路電話系統-WebRTC入門與活用30

尚未有邦友留言

立即登入留言