licode 的singlepc 模式是怎麼回事?

最近在摸索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請求,服務這邊也會創建多個底層連接等着協商,但是客戶端因爲是單連接,不會進行協商,所以會連接不成功。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章