最近在作一个基于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服务器的延时转发通路)