最近在作一個基於webrtc的視頻軟件,如下是本身對於上層創建通話鏈接流程的基本理解,記錄於此。web
假設A和B要創建視頻通話,A爲房間建立端,B爲加入房間端:服務器
一、A經過http登陸、獲取其餘服務器地址(作一些保存用戶信息的操做,獲取信令、stun、turn服務器地址等,非必要)websocket
二、A和信令服務器創建websocket長鏈接socket
三、A經過websocket向信令服務器註冊(建立房間,記錄房間號,等待B加入房間)視頻
四、A建立本地視頻,獲取A的sdp信息ip
五、B建立本地視頻,獲取B的sdp信息io
六、B發送本地sdp信息到信令服務器sendOfferwebrtc
6.一、B同時也在向stun(穿越)、turn(延時轉發)服務器獲取ice信息登錄
6.二、B發送ice信息到信令服務器(後續會和A交換3種信息,再也不贅述)軟件
七、信令服務器轉發sdp、ice信息到A(經過房間號辨別)
八、A將B的sdp信息設置到底層setRemoteDescription
8.一、A添加B的ice信息
8.二、A同時也在向stun(穿越)、turn(延時轉發)服務器獲取ice信息
8.三、A發送ice信息到信令服務器(後續會和B交換3種信息,再也不贅述)
九、A發送本地sdp信息到信令服務器sendAnswer
十、信令服務器轉發sdp信息到B
十一、B將A的sdp信息設置到底層setRemoteDescription
在交換sdp信息的同時,ice信息也在進行交換,經過交換ice信息,最終會選擇一種合適的方式來創建鏈接(p2p或者基於turn服務器的延時轉發通路)