Можно ли создавать одноранговые соединения в другой сети?

Я хочу создать одноранговые соединения между клиентом 2 nodejs.

используя websocket (dnode)

вот предел:

  • Клиент nodejs работает на 2 ПК, который находится в другой сети.
  • у них нет статического ip (192.168.1.100 && 192.168.2.200) за NAT или межсетевыми экранами
  • нет разрешения на изменение сопоставления маршрутизатора.
  • имеет только статический веб-сервер в публичной сети. (может изменить файл человеком)
  • можно установить приложение на ПК (выиграть)

Является ли это возможным? Спасибо

2 ответа

Может быть, вы можете использовать PeerJS для достижения ваших целей. PeerJS упрощает одноранговые данные, видео и аудио вызовы WebRTC. PeerJS оборачивает реализацию браузера WebRTC, чтобы предоставить полный, настраиваемый и простой в использовании API-интерфейс для однорангового соединения. Оборудованный только идентификатором, одноранговый узел может создать соединение данных P2P или потока мультимедиа с удаленным одноранговым узлом.

Также для соединения с брокером PeerJS подключается к PeerServer. Обратите внимание, что никакие одноранговые данные не проходят через сервер; Сервер действует только как посредник соединений.

Если под одноранговым соединением вы подразумеваете прямое соединение между одноранговыми узлами (т. Е. Не через сервер), то да, в большинстве случаев это возможно теоретически. Но я никогда не видел кого-то, кто внедрил решение.

Вам потребуется реализовать систему пробивки NAT для соединений TCP (они не всегда успешны на 100% из-за технических ограничений, которые не могут быть решены на программном уровне). Затем вам нужно просто реализовать протокол websocket поверх этого TCP-соединения.

Если по одноранговому соединению вы в порядке, что связь проходит через центральный сервер (с публичным адресом), то да, это тоже возможно. Оба узла должны просто подключиться к центральному серверу, и он должен просто передавать трафик между обоими узлами.

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