Позволит ли HTML5 веб-приложениям устанавливать одноранговые HTTP-соединения?
-
06-07-2019 - |
Вопрос
Возможно ли создать веб-приложение, которое с помощью центрального сервера могло бы создавать прямые соединения с другими пользователями того же веб-приложения?Я представляю себе процесс, похожий на пробивание отверстий UDP.
Я читал о новом WebSockets API в HTML5, но, похоже, вы должны инициировать соединение с WS-совместимым сервером, прежде чем начнется полностью дублированное соединение.Я больше думаю о процессе установления прямых соединений между клиентами с привлечением сервера Только при первоначальном рукопожатии.
ПРИМЕЧАНИЕ:Java-апплеты не учитываются.Меня интересуют только стандартные браузерные технологии.
Решение
Вместо разумных догадок, вот обоснованный ответ:
HTML 5 планирует разрешить одноранговые соединения с помощью javascript, но эти соединения НЕ БУДУТ ИСХОДНЫМИ TCP.
С полной спецификацией можно ознакомиться по адресу http://dev.w3.org/html5/websockets/
jrh
Редактировать:с конкретной ссылкой на одноранговые соединения ознакомьтесь с этими ссылками:
- Что касается одноранговых соединений: http://www.w3.org/TR/2008/WD-html5-20080122/#peer-to-peer
- Что касается широковещательных подключений к локальной сети: http://www.w3.org/TR/2008/WD-html5-20080122/#broadcast
- Что касается TCP-соединений (в закодированном протоколе): http://www.w3.org/TR/2008/WD-html5-20080122/#tcp-connections
- Полная предлагаемая спецификация: http://www.w3.org/TR/2008/WD-html5-20080122/#network
Важно отметить, что переговоры о возможностях все еще ведутся.Было бы неплохо иметь возможность создавать веб-приложения для "локального чата" :)
jrh
Другие советы
ОБНОВЛЕНИЕ 17.10.2012: Теперь эта функция существует в Chrome Stable v22.Чтобы использовать эту функциональность в Chrome, необходимо включить в chrome два флага: //flags:
- Включить медиапоток
- Включить PeerConnection (одноранговое подключение)
Затем вы можете посетить Демонстрационная страница AppRTC чтобы опробовать демо-версию.Посмотрите на WebRTC - Запуск демо-версий страница для получения более подробных инструкций по настройке Chrome для использования функций peer-to-peer и включению захвата устройств.
Обновить: У инженеров Ericcson Labs есть доказательство концепции в сборке WebKit, которая делает HTML5 Peer-to-Peer Разговорное Видео.
В их блоге есть демонстрации технологии в действии, а также диаграммы и объяснения того, как эта технология будет работать.
Они работают над тем, чтобы это стабилизировалось и было передано в репозиторий WebKit.
Да, наконец.
На момент написания статьи (2017 г.) WebRTC теперь является стандартной частью большинства современных браузеров (около 70% используемых) и допускает потоковую передачу мультимедиа, одноранговую связь и пробивание отверстий. р>
Документы, примеры кода и примеры в реальном времени для WebRTC можно найти по адресу html5rocks.com. . р>
Согласно caniuse.com и html5rocks.com , следующие браузеры поддерживают WebRTC:
Полная поддержка: Edge 14, Firefox 22, Firefox Android 55
Частичная поддержка: браузер Android 56, Chrome 20, Chrome Android 29, Edge 12, Firefox 17, Opera 18, Opera Android 20, Opera Mobile 12, UC Browser Android 11.4
Поддержка в будущем (3 квартал 2017 г.): Chrome для iOS 11, Safari 11 для iOS 11 и OS X 10.11
Нет поддержки: IE, IE Mobile, Opera Mini
Уровень насыщения WebRTC ограничен на устройствах Apple, поскольку Safari 11 еще не выпущен и требует iOS 11 или OS X 10.11. Несмотря на прогнозируемые тенденции обновления, WebRTC должен быть доступен примерно на 75% устройств iOS к 2018 году и на 100% к 2020 году.
Есть несколько причин, по которым это будет сложно:
<Ол>WebSockets предназначен для решения второй из этих проблем, но (сознательно, я ожидаю), а не двух других. Когда они говорят об одноранговой связи в спецификации HTML5, они говорят о полнодуплексной связи между сервером и клиентом, а не между одним клиентом и другим.
Однако было бы просто реализовать правильный сетевой стек поверх веб-сокетов - при условии, что все взаимодействие все равно должно осуществляться через сервер. Я видел, как это было сделано с помощью длинного опроса (мой друг из Uni написал полный стек TCP / IP с использованием длинного опроса).
Я второй harshath.jr: у вас вполне может быть сервер, выступающий в качестве каталога (отображающий "происхождение" каждого подключенного агента; источником является схема + хост + порт, как в draft-abarth-origin , где используется схема" ws "или" wss "). Затем вы можете инициировать одноранговые соединения WebSocket; SOP прорабатывается благодаря CORS . Конечно, это означает, что каждый агент (то есть браузер) должен был бы встроить свой собственный сервер WebSocket (< Opera Unite).
В то же время, сделайте это XMPP / IRC / и т. д.: нет однорангового соединения, но есть соединения WebSocket с центральным сервером (или сетью!) для передачи сообщений подключенным агентам (в конце концов, используя некоторые определенный WebSocket " подпротокол ")
РЕДАКТИРОВАТЬ: обратите внимание, что все это на самом деле выходит за рамки HTML5 (все эти вещи когда-то были частью HTML5, но были разделены на их собственные спецификации)
Идея веб-сокетов заключалась в том, чтобы решить проблемы с брандмауэрами и прокси-серверами http://www.kaazing.org/confluence/display/KAAZING/What+is+an+HTML+5+WebSocket