Могу ли я использовать WebRTC, чтобы открыть соединение UDP?
Нам нужно отправлять данные на устройства наших пользователей с использованием протокола TFTP, который представляет собой простой FTP-подобный протокол, работающий по протоколу UDP.
Поскольку мы не можем открыть сокет UDP с помощью javascript, мы используем наш сервер в качестве прокси-сервера, отправляя данные на наш сервер и открывая соединение UDP от сервера к устройству. Это имеет тот недостаток, что наши пользователи должны изучать NAT и настраивать переадресацию портов.
Итак, вопрос в том, можем ли мы использовать WebRTC, чтобы открыть прямой сокет UDP для отправки и получения между браузером и устройствами?
http://www.webrtc.org/reference/webrtc-internals/vienetwork предполагает, что мы могли бы отправлять некоторые необработанные данные UDP через сокет (то есть, если возможно получить доступ к этому слою через javascript. не уверен насчет этого), но я не вижу способа получить необработанный ответ UDP.
Любая помощь высоко ценится
2 ответа
Нет. Существует слишком много проблем безопасности, позволяющих отправлять WebRTC на произвольный адрес / порт - мы должны убедиться, что он не работает как платформа DDOS, поэтому мы требуем, чтобы цель внедрила ICE как неявное разрешение на отправку данных, и мы также не разрешаем отправлять произвольные данные, только средние потоки SRTP и данные в каналах данных (через SCTP через DTLS через UDP+ICE).
Нет, вы не можете отправлять необработанные данные UDP, используя WebRTC.
Библиотека ViENetwork, в которой вы можете найти метод SendUDPPacket, используется внутри Chrome для обработки передачи пакетов, поддержки Windows QoS и других сетевых настроек, но у вас нет прямого доступа к нему.
Одной из основных функций WebRTC является канал данных, который предоставит возможность установить одноранговое соединение между двумя браузерами, чтобы обеспечить обмен необработанными данными. Это все еще находится в стадии разработки в Chrome и Firefox, как вы можете видеть здесь.
Это может быть то, что вы ищете, так как вы можете установить соединение для отправки необработанных данных, и вам нужно будет только найти способ установить это соединение с другой конечной точкой, если вы этого хотите.