Будет HTML5 позволяет веб-приложения, чтобы сделать одноранговые соединения по протоколу HTTP?
можно ли создать веб-приложение, что с помощью центрального сервера, можно создать прямые соединения с другими пользователями того же веб-приложения? Я представляю себе процесс, похожий на пробивание отверстий UDP.
Я читал о новом API WebSockets в HTML5, но, похоже, вы должны инициировать соединение с WS-совместимым сервером, прежде чем может начаться полностью Дублированное соединение. Я думаю больше о процессе создания прямых соединений между клиентами, с сервером вовлечение только в начальном рукопожатии.
Примечание: Java-апплеты не учитываются. Меня интересуют только стандартные браузерные технологии.
6 ответов:
вместо разумных догадок, вот информированный ответ:
HTML 5 планирует разрешить одноранговые соединения из javascript, но эти соединения не будут необработанными TCP.
полная спецификация может быть найдена в http://dev.w3.org/html5/websockets/
jrh
EDIT: с конкретной ссылкой на одноранговые соединения, проверьте эти ссылки:
- относительно одноранговых соединений: 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:
- Включить MediaStream
- Включить PeerConnection
тогда вы можете посетить Демо-Страница AppRTC чтобы попробовать демо. Смотрите WebRTC-запуск демо страница для получения более подробной инструкции по настройке Chrome для использования одноранговая функциональность и включение захвата устройства.
обновление: инженеры в Ericcson Labs имеют доказательство концепции в сборке WebKit, которая делает HTML5 Одноранговое разговорное видео.
у них есть демонстрации в своем блоге технологии в действии, а также схемы и пояснения о том, как технология будет работать.
Они работают над тем, чтобы это стабилизировалось и было привязано к WebKit хранилище.
да, наконец-то.
на момент написания этой статьи (2017) WebRTC теперь является стандартной частью большинства современных браузеров (около 70% из тех, которые используются) и позволяет осуществлять потоковую передачу мультимедиа, одноранговую передачу и перфорацию отверстий.
документы, примеры кода и живые примеры для WebRTC можно найти по адресу html5rocks.com.
согласно caniuse.com и html5rocks.com, следующие браузеры поддерживают WebRTC:
полный поддержка: Edge 14, Firefox 22, Firefox Android 55
частичная поддержка: Андроид-браузер 56, хром 20, Chrome на Android, 29, край 12, в Firefox 17, 18 Опера, Опера 20 для Андроид, Опера Мобайл 12, UC браузер Андроид 11.4
будущая поддержка (Q3 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 году.
есть ряд причин, почему это было бы сложно:
- брандмауэры (даже просто NATs) затруднили бы такое соединение на гораздо более низком протокольном уровне, чем даже HTTP. С моей шляпой ИТ-безопасности это кажется прекрасным способом открыть произвольные порты на машине, просто посетив веб - сайт-и поэтому он будет агрессивно заблокирован практически всеми корпоративными ИТ-системами.
- HTTP по своей сути является протоколом клиент-сервер. Пока это так достаточно легко имитировать дуплексную связь с использованием длительного опроса (а также нескольких других методов), это не особенно эффективно.
- Это откроет большую дыру для атак XSS.
WebSockets предназначен для решения второй из этих проблем, но (намеренно, я ожидаю) не два других. Когда они говорят о peer-to-peer в спецификации HTML5, они говорят о полнодуплексной связи между сервером и клиентом, а не между одним клиент и еще один.
тем не менее, было бы просто реализовать правильный сетевой стек поверх websockets - с условием, что вся связь все равно будет осуществляться через сервер. Я видел, как это делается с помощью длинного опроса (мой друг в Uni написал полный стек TCP/IP, используя длинный опрос).
Я второй Харшат.jr: у вас вполне может быть сервер, действующий как каталог (выставляя "происхождение" каждого подключенного агента; происхождение-схема+хост+порт, как в draft-abarth-origin, причем схема является либо "ws", либо"wss"). Затем вы можете инициировать одноранговые соединения WebSocket;СОП прорабатывается благодаря CORS. Конечно, это означает, что каждый агент (т. е. браузер) должен будет встроить свой собственный сервер WebSocket (à la Opera Объединять.)
в то же время, сделайте это XMPP/IRC/etc.- путь: нет однорангового соединения, но WebSocket подключается к центральному серверу (или сети!) для передачи сообщений подключенным агентам (в конечном итоге с помощью определенного WebSocket "subprotocol")
EDIT: обратите внимание, что все это на самом деле выходит за рамки HTML5 (все эти вещи когда-то были частью HTML5, но были разделены на свои собственные спецификации)
вся идея веб-сокетов заключалась в том, чтобы решить проблемы с брандмауэрами и прокси-серверами http://www.kaazing.org/confluence/display/KAAZING/What+is+an+HTML+5+WebSocket
Comments