Можно ли создавать одноранговые соединения в другой сети?
Я хочу создать одноранговые соединения между клиентом 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-соединения.
Если по одноранговому соединению вы в порядке, что связь проходит через центральный сервер (с публичным адресом), то да, это тоже возможно. Оба узла должны просто подключиться к центральному серверу, и он должен просто передавать трафик между обоими узлами.