Да ICE абсолютно необходимо для WebRTC.
Q1: Есть ли необходимость использовать STUN и TURN для обхода NAT ?? если да Почему ???
Для вашего сценария вы не нужно использовать STUN или TURN. Позвольте мне объяснить, почему.
Каждый клиент, находящийся в частной сети, находится под каким-либо NAT, который имеет общедоступный IP-адрес. Внешний мир не знает частный IP-адрес этого клиента, и даже если они знают, что они не могут связаться с клиентом, не зная этого общедоступного IP-адреса. Сервер STUN используется для сбора этого общедоступного IP-адреса.
Так что если ваш сервер хочет инициировать подключение, ему необходимо, чтобы клиент отправил публичный IP-адрес NAT. Клиент будет использовать STUN-сервер, чтобы узнать свой публичный IP-адрес и отправить его на сервер. Но если клиент инициирует соединение, тогда нет необходимости знать публичный IP-адрес NAT. Клиент может отправлять пакеты на общедоступный сервер, чтобы инициировать соединение. Сервер может знать общедоступный IP-адрес culents из пакета клиентов, а затем они могут подключаться. Поэтому нет необходимости в STUN.
Ваш сервер выполняет роль TURN в этом сценарии. Поэтому вам не нужен сервер TURN.
Q2: Есть ли какие-либо взломы в WebRTC в браузере, которые устраняют необходимость использования STUN и TURN?
Нельзя взломать. В зависимости от сценариев используется TURN/STUN. Для вашего сценария вам не нужно. Если вы хотите создать клиент-клиентское соединение, вам понадобится сервер STUN.
Как мне реализовать клиент, чтобы он инициировал соединение webrtc? Похоже, у нас нет контроля над тем, кто начнет работу в webrtc! –
Вы пишете приложение, вы решаете, кто отправит предложение. –
ICE работает с предложением, модель ответа. Предложение отправки посылки - это тот, кто инициирует соединение. Предложение отправки по одному концу означает отправку описания сеанса, которое на самом деле является информацией об IP-адресах, на другом конце. Когда другой конец получает, он генерирует свое собственное описание сеанса, которое называется ответом и отправляет его на другой конец. После этого начнется проверка льда. Таким образом, у вас должен быть доступ к конечному и клиентскому терминалу. С вашего конечного кода клиента вам необходимо отправить предложение на сервер, а с вашего конечного кода сервера получить это предложение и сгенерировать и отправить ответ обратно клиенту. – Tahlil