大家好,今天介绍:RTCPilot的信令流程
RTC Pilot是一个基于C++17开发的WebRTC SFU开源,支持跨平台,支持windows,linux,macos,二次开发效率高;并且是开源中唯一全面支持WebRTC级联的开源服务。
这个系列的内容。
•如何部署和使用一个简单的视频会议
•如何部署一个分布式多服务级联的视频会议
•介绍RTCPilot的信令流程
•介绍RTCPilot级联的信令流程
•RTCPilot实现会议实时语音转文字(RTCPilotMCU)
上一期我们介绍RTC pilot如何搭建一个RTC集群,提供分布式的视频会议系统。
今天我们介绍RTC pilot的信令流程,方便开发者做二次开发。
视频地址:
如何配置RTC集群
信令基于websocket,信令类型有两类:
•Request消息
有发送和返回消息Response,消息是双向的
•Notify消息
仅发送,没有回复消息,消息是单向的
信令流程如图,有三个角色:两个客户端client A和client B;一个RTC pilot SFU,也就是WebRTC服务端。

信令流程如下:
1.Join Request: client A在web socket连接成功后,发送join request消息。因为房间内没有其他用户,返回用户信息为空
2.Push Request: client A在join后,发送push request消息,将自己的WebRTC peer connection的SDP发送给SFU;SFU收到后,通过response消息返回自己支持的SDP信息。Client A收到后,就可以开始建立WebRTC通道和开始推流
3.client B开始web socket连接SFU,并发送join request消息,因为房间里面已经有了client A,client B将收到带有client A用户信息和流信息的response消息。
4.SFU收到client B的join消息后,会向整个房间广播client B的用户信息,这里会向client A发送new User notify消息
5.Client B因为通过join的response得到Client A的推流信息,所以发送pull request消息,进行拉流
6.Client B拉流成功后,同样可以进行推流,发送push request开始推流;
7.SFU收到Client B的push request后,将其流信息在房间内广播,这里向client A发送new pusher notify消息
8.Client A收到new pusher notify消息后,得到client B的流信息,就可以发送pull request进行拉流操作。
信令具体的json内容:
具体的信令json内容,在开源markdown文档中。websocket信令设计文档地址:
https://github.com/runner365/RTCPilot/blob/master/ws_design.md
国内镜像
https://gitee.com/xiaoq_bj/rtcpilot/blob/master/ws_design.md
关注音视频小话,关注抖音号,视频号,带来更多音视频技术