Вопрос

Я слышал об интерфейсе веб-сокетов в спецификации HTML-файла из соответствующего вопроса здесь.
Это звучит очень многообещающе!
Я не понимаю, как это работает, он по-прежнему использует протокол HTTP и работает в обход него или работает что-то вроде TCP-сокетов?

Это было полезно?

Решение

Протокол веб-сокетов основан на протоколе TCP, но его дизайн рассчитан на понижение до HTTP.Существует также HTTP-квитирование, которое запрашивает сервер перейти на протокол веб-сокетов.Таким образом, если сервер поддерживает это, то будет использоваться дублированное TCP-соединение, в противном случае для этого прибегните к HTTP и взломам Comet.

Другие советы

В некотором смысле, это одновременно и HTTP-запрос, и обычный TCP-сокет.

Подключение к websocket запрашивается с использованием обычного HTTP-запроса по протоколу TCP. Отправляются некоторые заголовки, которые указывают веб-серверу, что запрашивается именно websocket, а не обычная страница, но по сути это просто HTTP-запрос.

После отправки ответа с сервера соединение обновляется.То есть TCP-соединение, которое использовалось для HTTP, перехвачено для более высокого вызова:двунаправленная передача данных в реальном времени.

Как только у вас появится возможность общаться в двух направлениях и эффективно (что является главной победой над comet), горизонты разработчиков значительно расширились.Внезапно такие вещи, как MMO-игры и совместная работа в реальном времени, которые были невозможны при использовании только веб-технологий, становятся возможными.

Это не HTTP и не обычные TCP-сокеты.Он разработан для снижения накладных расходов при обычных подключениях к сокетам (AJAX / COMET требуют очень высоких накладных расходов), но без ущерба для некоторых принципов безопасности браузера, которые были разработаны за последние несколько лет.

Первоначальное рукопожатие WebSockets очень похоже на HTTP.Это упростит существующим HTTP-прокси и веб-серверу поддержку входящих подключений WebSockets и правильную работу с ними (т.е.перенаправление их реальному обработчику).Но после успешного рукопожатия (которое включает обмен и проверку информации об источнике) соединение остается открытым и становится двунаправленным.

Каждый пакет данных (независимо от того, отправляется ли он с сервера или от клиента) начинается с '\x00' (нулевой байт), за ним следуют данные в кодировке UTF-8 и заканчивается '\xff' (все единичные байты).

Текущий проект стандарта находится здесь: http://tools.ietf.org/html/draft-hixie-thewebsocketprotocol-76

Вы также можете счесть wsproxy, включенный в noVNC, полезным в качестве ссылки.wsproxy - это универсальный прокси-сервер WebSockets для TCP-сокетов.В состав noVNC входит как версия wsproxy на C, так и на python.

http://github.com/kanaka/noVNC/tree/master/utils/

В такой ситуации роль сервера наступает тогда, когда :

В HTML 5 WebSocket похож на fone (двусторонняя связь.), а не на walky-talky.Протокол HTTP обновлен до протокола websocket.(wss:// from ws://) СЕРВЕР должен иметь возможность открывать дуплексный канал и, следовательно, СОГЛАШАТЬСЯ на дуплексную связь.Пожалуйста, также перейдите по этой ссылке :http://www.html5rocks.com/en/tutorials/websockets/basics/

Спасибо.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top