iT邦幫忙

2021 iThome 鐵人賽

DAY 6
0
Modern Web

後疫情時代的 WebRTC 微學習系列 第 6

Day06 WebRTC 中的 Signaling Server

Signaling server 在 WebRTC 中扮演什麼角色

前面說到 WebRTC 使用 Signaling server 來交換媒體資訊與網路候選者的訊息,所以 Signaling server 承擔著通話是否能接通的重責大任。但 WebRTC 1.0 規範文檔中卻沒有對 Signaling server 做任何定義,原因是 Signaling server 與應用的商業邏輯密切相關,有些應用不需要多人通話,有些需要多人互動,如果去規範就會失去很大的彈性,不如就不去約束了,而 WebRTC 就只需要專注在影音處理、網路處理,任何能夠進行網路資料交換的技術都可以用來實現 Signaling server,如HTTP、XMPP及WebSocket等。

通常我們使用 WebSocket 與 Signaling server 之間進行連接。由於 WebSocket 是雙向通信協議,伺服器可以很容易的發送資料給使用者。聽起來感覺很感覺很複雜,但其實就是一系列 WebSocket 請求,開發者可以自定義 RequestBody 的內容。

如何運作

https://ithelp.ithome.com.tw/upload/images/20210920/20130062I9h2DQlmQy.png

Signaling Server 有點像是交友軟體,下載 APP 註冊帳號時我們就要填寫我們的個人訊息,當有人想認識你時,對方可以看到我們的個人資訊,我們也可以看到對方的資訊,覺得個性興趣相輔後我們可以進行聯繫,熟識後可以約出來吃飯聊天。

是不是很像上一篇提到的流程:

https://ithelp.ithome.com.tw/upload/images/20210920/20130062ozKrRtC9PX.png

  1. Bob 呼叫 RTCPeerConnection.createOffer 建立一個 offer ,並呼叫 setLocalDescription 設定本地的 SDP。
  2. 通過 Signaling server 將包含 Bob SDP 的offer 發送給 Alice。
  3. Alice 收到 offer 後呼叫 setRemoteDescription 設定 Bob 的 SDP。
  4. Alice 呼叫 RTCPeerConnection.createAnswer 建立一個 answer ,並呼叫 setLocalDescription 設定本地的 SDP。
  5. 通過 Signaling server 將包含 Alice SDP 的 answer 發送給 Bob 。
  6. Bob 收到 answer 後呼叫 setRemoteDescription 設定 Alice 的SDP

總結

  • 了解運作流程
  • 我們需要自己根據應用的情境自己設計 Signaling server
  • 能夠進行網路資料交換的技術都可以用來實現 Signaling server

上一篇
Day05 媒體協商與SDP
下一篇
Day07 NAT 類型
系列文
後疫情時代的 WebRTC 微學習30

尚未有邦友留言

立即登入留言