Подтвердить что ты не робот

WebRTC на изолированной локальной сети без сервера льда/оглушения/поворота

В изолированной ЛВС существует ли способ установить соединение WebRTC просто с помощью IP-адресов, назначенных сервером DHCP?

Я понимаю, что могу добиться этого с помощью Node.js и Socket.io, но я действительно надеялся избежать настройки такого типа сервера с моим ограниченным набором навыков. Я учитель естествознания, который увлекается программированием, поэтому не стесняйтесь делать все просто. Спасибо!

UPDATE

Алекс, ты прав, что я могу избежать использования сервера STUN, если все компьютеры находятся в одной локальной сети. Хотя мне пришлось прикусить пулю и установить Node.js на свой ноутбук, это было действительно несложно. Затем я попробовал целую кучу "рабочих примеров", которые мне не помогли, пока я не нашел этот и его файлы GitHub.

После запуска серверного скрипта в Node у меня было DataChannel соединение между двумя окнами браузера на одном компьютере, но не между разными компьютерами. Я отредактировал файлы .html так, чтобы они указывали на IP-адрес моего локального сервера, а не на localhost, и я смог подключиться к нескольким компьютерам. Затем наступил настоящий тест - могу ли я использовать это без подключения к интернету? Я нашел строку, в которой указаны серверы Google STUN, и изменил ее с

.var config = {"iceServers":[{"url":"stun:stun.l.google.com:19302"}]};

просто

var config = {"iceServers":[]};

Это сработало. :-)

4b9b3361

Ответ 1

Опустить список iceServers:

const pc = new RTCPeerConnection();

Либо опустите список iceServers из конструктора RTCPeerConnection, либо сделайте его пустым списком [].

Из документов RTCPeerConnection :

iceServers | опционально

Массив объектов RTCIceServer, каждый из которых описывает один сервер, который может использоваться агентом ICE; обычно это серверы STUN и/или TURN. Если это не указано, будет предпринята попытка подключения без доступа к серверу STUN или TURN, что ограничивает подключение к локальным узлам.

демонстрация webrtc/samples

Проект WebRTC имеет образец Trickle ICE, который вы можете использовать, чтобы увидеть, как изменения в iceServers влияют на собранные адреса кандидатов. Конкретный пример, на который вы хотите посмотреть, -

  1. .Запустите его с настройками по умолчанию, нажав кнопку "Собрать кандидатов" в нижней части страницы. Это вернет список адресов, которые включают в себя адрес публичной части вашего NAT.

    Default ICE Servers

  2. Теперь удалите все серверы ICE из списка и снова нажмите "Собрать кандидатов", на этот раз вы должны видеть только адреса локальной сети.

    No ICE Servers

Обратите внимание, что в моей сети 2 общедоступных IPv4-адреса (начиная с 98) появляются только при использовании серверов ICE по умолчанию. Когда я использую пустой список серверов ICE, мои общедоступные адреса IPv4 больше не обнаруживаются. С другой стороны, мои адреса IPv6 одинаковы в обоих тестах, потому что они не подчиняются NAT.

Вот ссылка на исходный код, который устанавливает iceServers и PeerConnection.