Почему мой код WebRTC генерирует так много ледовых кандидатов?

Вот код на стороне клиента: http://hostcode.sourceforge.net/view/2911

Вот код на стороне сервера: http://hostcode.sourceforge.net/view/2912

Итак, что происходит, у меня есть две кнопки. Я новичок в webrtc, поэтому сейчас я просто проверяю это с помощью кнопок.

Я открываю одно окно и захожу на localhost. Я нажимаю принять камеру и вижу себя в камере. Затем, в первом окне, я должен нажать на соединение. Я не нажимаю на другую кнопку!

Я открываю другое окно и захожу на localhost. Я нажимаю Принять камеру, вижу себя, а затем нажимаю сначала на кнопку "Подключиться", а затем на кнопку "Создать предложение". Эти два окна соединяются, НО это генерирует как 8-15 ледовых кандидатов... И у меня они входят в консоль. Так много ледовых кандидатов.... почему? Это список всех людей в моей сети Wi-Fi? Или что? Там, где написано "Хорошо, так что это событие-кандидат на лед, я думаю:", а затем в нем перечислены кандидаты на лед… Это записывается как 14 раз в console.log, как раз когда эти два окна соединяются! Это не имеет никакого смысла...

1 ответ

Я думал, что ледовые кандидаты были люди, которые открыли окно

Нет, вот где ты не прав. Протокол ICE пытается установить прямое сетевое соединение между двумя узлами. Это сложная проблема. В обычной топологии сети существует много проблем, которые можно обойти, и множество возможных маршрутов, по которым может пойти прямое соединение. Протокол ICE использует сторонний сервер (например, кто-то, кроме двух клиентов, которых вы пытаетесь подключить) для проверки возможных сетевых путей между обоими узлами. Это то, что кандидаты ICE. Это одно из предложений, как установить соединение. Три стороны продолжают исследовать и тестировать различные возможности, пока все они не будут исчерпаны и / или не будет установлена ​​хорошая прямая связь.

Другие вопросы по тегам