我很難理解onicecandidate函數的puropse。 候選冰如何幫助建立對等連接。誰最先發送候選冰?peer_connection.onicecandidate()函數做什麼?什麼是ice_event?
0
A
回答
1
- 在引擎蓋下,webrtc根據可用的網絡連接收集本地候選人以及通過JS API傳遞給它的ice服務器列表。
- 一旦冰候選人準備好了,它就會通過onicecandidate API提供給JS層。
- 如果您使用滴流ICE,則可以通過信號路徑立即將候選人發送給遠程對等體。否則,請等待最後一個(空)候選人,按優先順序排列,將它們添加到offer/answer sdp,並通過信號路徑發送offer/answer。這通常由瀏覽器自動完成。
- 你可能看這裏的握手規格: https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-09
1
對端設備將不能夠將流媒體使用它自己的私有IP其他同行。所以我們需要NAT穿越服務器(ICE服務器)將私有IP映射到公共IP。
因此,客戶端應用程序應該向ICE服務器請求他自己的ICE候選人「哪些是公共ID」。
首先呼叫者要求他的公共IP(ICE候選者)並通過信令服務器將其發送給另一個對等者。
當其他人收到候選人時,他還向ICE服務器詢問了他自己的候選人,並將其發回給主叫方。
當兩個對等體彼此擁有對方候選人(公共IP)時,他們可以進行P2P流傳輸。
ICE問題
20%,ICE服務器 - STUN協議將無法提供公共IP。因爲兩個媒體設備位於對稱NAT後面!或者防火牆阻止P2P流量!
在這種情況下,P2P流將不可靠! 爲了解決這些問題,我們必須使用外部媒體轉發服務器 - TURN服務器是由ICE服務器
0
這裏所支持的協議是一個例子:
connection.onicecandidate = function(newRTCPeerConnectionIceEvent) {
// a new candidate has been created
var newRTCIceCandidate = newRTCPeerConnectionIceEvent.candidate;
// could send this to the remote peer
};
候選人代表的目的地(發送或接收)媒體流和在SDP將看起來像這樣:
a=candidate:1 1 UDP 2130706431 10.0.1.1 8998 typ host
相關問題
- 1. 什麼是VBScript函數做什麼
- 2. 那麼函數SDL_FreeSurface是做什麼的?
- 3. 什麼是參數的類型,這個函數做什麼?
- 4. 什麼「?」做?什麼是__FILE__?
- 5. 什麼是setDetailItem:做什麼?
- 6. 這個函數做什麼?
- 7. Wince - CreateProcess函數做什麼
- 8. OpenCL native_函數做什麼?
- 9. uint8函數做什麼?
- 10. 這個函數做什麼?
- 11. PHP函數@ $ _做什麼?
- 12. MATLAB的bitxor函數是做什麼的?
- 13. OpenCV的cvWaitKey()函數是做什麼的?
- 14. 這是什麼lambda函數做
- 15. 什麼是showErros函數做jQuery驗證
- 16. Win32_AllocatedResource函數是做什麼的?
- 17. jQuery()函數是做什麼的?
- 18. 什麼是延遲()函數做
- 19. 「耙測試:函數」是做什麼的?
- 20. Wordpress「_e()」函數是做什麼的?
- 21. 這裏做的it()函數是什麼?
- 22. php函數「超載」是做什麼的?
- 23. 什麼是sqlalchemy query()函數在做什麼?
- 24. 這個函數做什麼?什麼是奇怪的語法?
- 25. 這個函數做什麼,它是什麼意思?
- 26. 什麼是打開:函數在JavaScript中做什麼?
- 27. 做默認析構函數做什麼?
- 28. 是什麼[popViewControllerAnimated];做?
- 29. 什麼是random.random做
- 30. 什麼是「javascript :;」做?