作者:cgs1999 原文鏈接:https://blog.csdn.net/cgs1999/article/details/100133917
protoo
protoo is a minimalist and extensible Node.js signaling framework for multi-party Real-Time Communication applications.
github:https://github.com/versatica/protoo
vscode調試gulp設置
原文地址:https://www.jianshu.com/p/7ccc7a190d0e
為此,我們需要為vscode添加啟動配置,這通過在項目的根目錄中添加一個名為 .vscode 的文件夾,並添加名為 launch.json 的文件,或者在調試菜單中添加配置。
配置如下:
{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Debug Gulp", "program": "${workspaceRoot}/buildNew/node_modules/gulp/bin/gulp.js", "stopOnEntry": true, "args": [ "buildAddr" ], "cwd": "${workspaceRoot}/buildNew/", "outFiles": [], "sourceMaps": true, "runtimeExecutable": null, "env": { } } ] }
其中
type與request固定配置,name是為這個配置賜的名號,program指向項目目錄下gulp所在位置,args為gulp中配置的task也就是你想要調試的task,cwd指向的是gulpfile.js所在路徑。
配置完成后按 F5 進入調試模塊,選擇調試配置運行即可。
其中多數配置非必須,最簡運行配置如下。
{ "type": "node", "request": "launch", "name": "Gulp buildAddr", "program": "${workspaceRoot}/buildNew/node_modules/gulp/bin/gulp.js", "cwd": "${workspaceRoot}/buildNew/", "args": [ "buildAddr" ] }
gulp開發中目錄路徑和活動對象都是較為令人苦惱的,通過vscode進行調試能方便很多,雖然webstorm在已經集成gulp調試,並且讀取了所有task更佳方便,然而他卡啊!
問題匯總
在Ubuntu系統下,gulp報錯:watch ENOSPC
參考地址:http://www.udaxia.com/wtjd/6708.html
https://cloud.tencent.com/developer/ask/87153
解決方案:當前問題主要是因為gulp的watch需要監聽很多文件的改動,但ubuntu系統的文件句柄其實是有限的,因此
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p
1. 設計架構圖

Worker
一個Worker代表着一個運行在單核CPU上並處理Router實例的mediasoup C++子進程;
Router
Router用於注入、選擇和轉發通過Transport實例創建的媒體流;
Transport
Transport將終端與MediaSoup Router連接起來,並通過在其上創建的Producer和Consumer實例實現雙向媒體傳輸,實現了下面3種Transport:
WebRtcTransport
一個WebRtcTransport代表着一個WebRTC終端和MediaSoup通過ICE和DTLS過程協商的網絡路徑。WebRtcTransport可用於接收媒體、發送媒體或同時接收和發送媒體。MediaSoup沒有限制。但是,由於其設計,mediasoup-client和libmediasoupclient要求區分用於發送和接收的WebRtcTransport。
PlainRtpTransport
一個PlainRtpTransport代表着一個通過它傳輸純RTP和RTCP的網絡路徑。
PipeTransport
一個PipeTransport代表着一個通過它傳輸純RTP和RTCP的網絡路徑。PipeTransport旨在實現在同一主機或不同主機上兩個匹配的Router實例間的互相通信;
Producer
一個Producer代表着一個被注入到MediaSoup Router的音頻或視頻源。它是在定義媒體數據包傳送方式的Transport之上創建的。
Consumer
一個Consumer代表着一個被MediaSoup Router轉發到終端的音頻或視頻源。它是在定義媒體數據包傳送方式的Transport之上創建的。
每個Transport 最多 有2個Producer(Video、Audio)和2個Consumer(Video、Audio)
2. 核心類圖

業務實現需考慮增加以下類:
Host
主機或服務器,一個N核CPU的Host有N個Worker
Room
會議,一個Room有1到多個Router,有0到多個Participant
Participant
參會人或觀看方,每個Participant 有0到多個Transport(主流和輔流)
3. 參考資料
官網V3設計文檔
https://mediasoup.org/documentation/v3/mediasoup/design/
官網V3 API文檔
https://mediasoup.org/documentation/v3/mediasoup/api/
