前面說到 WebRTC 使用 Signaling server 來交換媒體資訊與網路候選者的訊息,所以 Signaling server 承擔著通話是否能接通的重責大任。但 WebRTC 1.0 規範文檔中卻沒有對 Signaling server 做任何定義,原因是 Signaling server 與應用的商業邏輯密切相關,有些應用不需要多人通話,有些需要多人互動,如果去規範就會失去很大的彈性,不如就不去約束了,而 WebRTC 就只需要專注在影音處理、網路處理,任何能夠進行網路資料交換的技術都可以用來實現 Signaling server,如HTTP、XMPP及WebSocket等。
通常我們使用 WebSocket 與 Signaling server 之間進行連接。由於 WebSocket 是雙向通信協議,伺服器可以很容易的發送資料給使用者。聽起來感覺很感覺很複雜,但其實就是一系列 WebSocket 請求,開發者可以自定義 RequestBody 的內容。
Signaling Server 有點像是交友軟體,下載 APP 註冊帳號時我們就要填寫我們的個人訊息,當有人想認識你時,對方可以看到我們的個人資訊,我們也可以看到對方的資訊,覺得個性興趣相輔後我們可以進行聯繫,熟識後可以約出來吃飯聊天。
是不是很像上一篇提到的流程:
RTCPeerConnection.createOffer
建立一個 offer ,並呼叫 setLocalDescription
設定本地的 SDP。setRemoteDescription
設定 Bob 的 SDP。RTCPeerConnection.createAnswer
建立一個 answer ,並呼叫 setLocalDescription
設定本地的 SDP。setRemoteDescription
設定 Alice 的SDP