Будет HTML5 позволяет веб-приложения, чтобы сделать одноранговые соединения по протоколу HTTP?



можно ли создать веб-приложение, что с помощью центрального сервера, можно создать прямые соединения с другими пользователями того же веб-приложения? Я представляю себе процесс, похожий на пробивание отверстий UDP.



Я читал о новом API WebSockets в HTML5, но, похоже, вы должны инициировать соединение с WS-совместимым сервером, прежде чем может начаться полностью Дублированное соединение. Я думаю больше о процессе создания прямых соединений между клиентами, с сервером вовлечение только в начальном рукопожатии.



Примечание: Java-апплеты не учитываются. Меня интересуют только стандартные браузерные технологии.

556   6  

6 ответов:

вместо разумных догадок, вот информированный ответ:

HTML 5 планирует разрешить одноранговые соединения из javascript, но эти соединения не будут необработанными TCP.

полная спецификация может быть найдена в http://dev.w3.org/html5/websockets/

jrh

EDIT: с конкретной ссылкой на одноранговые соединения, проверьте эти ссылки:

важно отметить, что возможности все еще ведутся переговоры. Будет приятно иметь возможность создавать" локальный чат " веб-приложения:)

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 году.

есть ряд причин, почему это было бы сложно:

  1. брандмауэры (даже просто NATs) затруднили бы такое соединение на гораздо более низком протокольном уровне, чем даже HTTP. С моей шляпой ИТ-безопасности это кажется прекрасным способом открыть произвольные порты на машине, просто посетив веб - сайт-и поэтому он будет агрессивно заблокирован практически всеми корпоративными ИТ-системами.
  2. HTTP по своей сути является протоколом клиент-сервер. Пока это так достаточно легко имитировать дуплексную связь с использованием длительного опроса (а также нескольких других методов), это не особенно эффективно.
  3. Это откроет большую дыру для атак 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

    Ничего не найдено.