最近在摸索webrtc 單機多流的情況,webrtc給出了標準planb的解決方法,在licode的forum中查找,已經明確表示不支持
https://discourse.lynckia.com/t/typical-questions-for-licode/728
第六條,表示在wip (work in progress)
同時,licode提供了singlepc的模式,鏈接如下
https://github.com/lynckia/licode/blob/master/feature-review/single-peer-connection.md
看起來好像是單機多流的情況。那麼這個singlepc到底怎麼回事?
讓我們追蹤下代碼,在licode_config.js配置文件裏找到了其配置如下
config.erizoController.allowSinglePC = false; // default value: false
開啓true模式後,首先在erizoController.js文件中查找:
好像沒什麼用,只是存到了option中。
我有查找了ec這邊的代碼,基本沒啥用,唯一的作用是和option一起在addpublisher addsubscriber的時候,發送給了ejs那邊,
那麼ejs 這邊的情況如何?
到erizoJSController.js搜索對應函數
發送這個參數被送到了client 中,繼續搜索
傳進來後,在getOrCreateConnection中用了一下,用了只創建一個connection
那麼connection是幹什麼的?
注意,connection裏,有個重要的參數wrtc ,這個對應底層c++的傳輸底層,到這裏,就明白了singlpc的意義了
開始劃重點:
當這個參數被設置成true的時候,在客戶端一個連接上來後,無論發送多少次的Publishe請求,服務器這邊只創建一個wrtc ,就是一個底層連接,通過這種方式,licodce實現了單客戶端多流。
如果這個參數沒有開啓,同時客戶端發送多次的publishe請求,服務這邊也會創建多個底層連接等着協商,但是客戶端因爲是單連接,不會進行協商,所以會連接不成功。