Как вы можете сделать WebRTC по локальной сети без подключения к интернету?

Я хочу, чтобы два разных компьютера открывали статическую HTML-страницу и могли общаться друг с другом через WebRTC по локальной сети. В этом сценарии нет связи с внешним миром. Один из ПК сможет вручную ввести IP-адрес другого компьютера и подключиться к нему с помощью этого жесткого IP-адреса. Нужен ли сервер ICE? Если да, нужен ли самому серверу доступ в Интернет для внешнего мира?

1 ответ

В этом случае вам не нужны ICE-серверы. Обычно у вас есть следующие кандидаты ICE:

  • хост (генерируется клиентом путем привязки к его локально назначенным IP-адресам и порту)
  • srflx (серверные рефлекс-кандидаты генерируются с использованием STUN)
  • ретрансляция (кандидаты на ретрансляцию генерируются с помощью TURN)

Поэтому без ICE-серверов у вас будут генерироваться только кандидаты в хосты, чего достаточно в вашем случае, поскольку оба пользователя находятся в одной локальной сети.

Хотя WebRTC разрешает одноранговую связь, ему все еще нужен сервер для сигнализации: чтобы разрешить обмен мультимедийными данными и сетевыми метаданными для начальной загрузки однорангового соединения.

Таким образом, главная проблема здесь заключается в том, что вам нужно как-то обмениваться "предложением" и "ответом" между конечными точками, чтобы у каждой стороны было достаточно информации друг о друге. Обычно для этой цели используется некоторый протокол сигнализации + публичный сервер.

В вашем случае у вас есть 3 варианта:

  • установить прямое p2p соединение WebSocket между двумя браузерами. Не уверен, если это возможно. Похоже, браузер может подключаться только к другой конечной точке, а не слушать.
  • вручную скопируйте \ пропустите SDP "предложение" и "ответ", что, на мой взгляд, не очень хорошо
  • у вас есть какой-нибудь третий компьютер с установленным сервером сигнализации, поэтому другие коллеги будут использовать его для обмена "предложения" и "ответа" между собой
Другие вопросы по тегам