前面已介绍过我学习client端笔记,最近也有些时间,回过头再梳理下Server端学习笔记
这里就按照官方的demo的代码来一步一步梳理学习。
https://github.com/versatica/mediasoup-demo/tree/v3/server
乍一看代码结构还挺多的
其实主要关注以下几个文件,就可以实现mediasoup的服务端的功能;
- config[.example].js
- server.js
- lib/Room.js
下面一个一个来说明;
config.js
这里主要配置的 证书 端口 域名 ip地址等等,如果你对音视频某些参数也可以在这里配置,这里给一张图仅供参考
- routerOptions 创建路由的相关参数
- webRtcTransportOptions 创建rtc通道的相关参数
- plainTransportOptions 如果你不需要创建该通道这里也可以不用配置
server.js
这部分的代码和mediasoup的相关功能,可以简单理解为统一控制房间创建、删除;getOrCreateRoom
这里我只关注了
- runMediasoupWorkers medisoup的服务
- runHttpsServer http服务
- runProtooWebSocketServer websocket服务
至于 createExpressApp 可以当成纯粹的demo业务功能;
Room.js
server部分是控制房间,这里就是控制人、通道、数据
关注学习点
*_handleProtooRequest 处理通过信令的数据,其他方法都是围绕着
- handleProtooConnection
如果能理解以下代码的作用功能,剩下的就是api的问题了。
peer.data.transports = new Map();
peer.data.producers = new Map();
peer.data.consumers = new Map();
peer.data.dataProducers = new Map();
peer.data.dataConsumers = new Map();
我这里简单提下,比如说第一个 peer.data.transports ,可以简单理解为用了储存这个用户共创建了多少的transports 剩下的,后面的都理解起来比较简单了。
ok就到这了,重要的几个文件大概聊了下,后面再详细介绍。