У меня возникли трудности с пониманием puropse функции onicecandidate. Как кандидаты на льду помогают в установлении связи между сверстниками. И кто сначала отправляет льда?Что делает функция peer_connection.onicecandidate(), что такое ice_event?
ответ
- Под капотом webrtc собирает местный кандидат в зависимости от доступных сетевых подключений и список ледовых серверов, передаваемых ему через JS API.
- После того, как кандидат на лед готов, он предоставляется уровню JS через API onicecandidate.
- Если вы используете проточную ICE, вы можете отправить кандидата прямо через путь сигнализации к удаленному одноранговому узлу. В противном случае дождитесь последнего (нулевого) кандидата, закажите их по приоритету, добавьте их в предложение/ответ sdp и отправьте предложение/ответ по пути сигнализации. Это обычно делается автоматически для вас браузером.
- Вы могли бы посмотреть на спецификации рукопожатия здесь: https://tools.ietf.org/html/draft-ietf-rtcweb-jsep-09
Устройство сверстников не будет иметь возможность потокового медиа к другому партнеру, используя свой собственный IP-адрес. Поэтому нам нужен сервер NAT-traversing (ICE-сервер), который отображает частный IP-адрес в общедоступный.
Таким образом, клиентское приложение должно запросить ICE-сервер для своих собственных кандидатов ICE, «который является общедоступным идентификатором».
Сначала вызывающий абонент попросит публичный IP-адрес (кандидат ICE) и отправит его другому партнеру через сервер сигнализации.
Когда другой парень получил кандидатов, он также попросил сервер ICE о своем кандидате и отправить его обратно вызывающему абоненту.
, когда оба пэра имеют друг друга со льдом (публичные IP-адреса), чтобы они могли делать потоки P2P.
ICE ПРОБЛЕМ
20% SERVER ICE - протокол STUN будет сбой в обеспечении общественного IP. Потому что либо оба устройства, расположенные за симметричным NAT! или P2P-трафика, заблокированного брандмауэром!
В этом случае потоковая передача P2P будет надежной! Для решения этого мы должны использовать внешнее реле медиа-сервер - сервер TURN, который представляет собой протокол, поддерживаемый ICE сервер
Вот пример:
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. Что делает этот код? и что такое функция «число (2)»?
- 2. Что делает эта функция? И что такое нечетный синтаксис?
- 3. Что такое функция stop()?
- 4. Что делает функция glFrustum?
- 5. Что это такое делает
- 6. Что такое «===!» оператор делает?
- 7. Что такое функция eval?
- 8. Узнайте, что делает функция
- 9. Что делает функция wait()?
- 10. Что делает эта функция?
- 11. Что делает функция()?
- 12. Что делает эта функция?
- 13. Что делает функция turtle.setworldcoordinates?
- 14. Что делает функция PHP @ $ _?
- 15. Что делает встроенная функция?
- 16. Что делает следующая функция?
- 17. Что делает функция .subscribe()
- 18. Что делает эта функция?
- 19. Объясните, что функция делает
- 20. Что делает функция to_char?
- 21. Что делает эта функция?
- 22. Что делает функция numpy.max?
- 23. Что делает эта общая функция?
- 24. Что делает функция «_» в Вала?
- 25. Что такое S_ISREG() и что он делает?
- 26. Что такое Boxen и что он делает?
- 27. Что такое ответ REST, что он делает?
- 28. Что такое GraphemeCluster и что делает ExpressibleByExtendedGraphemeClusterLiteral?
- 29. Что такое класс jobConf? Что он делает?
- 30. Что такое и что делает machineKey?