Что же такое ReverseHTTP и почему он будет полезен? - PullRequest
9 голосов
/ 01 июля 2010

reversehttp.net не дает непосредственного представления о том, что такое на самом деле reversehttp и как его лучше всего использовать, из-за этого кажется, что этот инструмент слишком сложен для реализации на практике.В каких средах это может быть идеальная ситуация с веб-данными в реальном времени, и когда это не сработает, какие браузеры поддерживают этот метод и что именно?

  • Что делает reversehttp уникальным среди другихРеализация PUSH?

Спасибо всем, кто может помочь и первым об этом услышал и знает, что это такое.

Ответы [ 4 ]

6 голосов
/ 01 июля 2010

Обратный HTTP - это способ для клиента сохранять открытое соединение с веб-сервером, чтобы веб-сервер мог отправлять обновления клиенту (а не клиенту, постоянно запрашивающему обновления).

Возьмем, к примеру, ваш классический клиент Twitter.

В настоящее время клиент периодически спрашивает Twitter, есть ли у вас какие-либо обновления.Если нет, то это бесполезный запрос.

С такой технологией, как Reverse HTTP, когда вы установите соединение с Twitter ... Twitter сможет отправлять вам обновления, когда они произойдут, сохраняя вам и Twitter некоторую пропускную способность,накладные расходы и небольшие усилия.

Обратный HTTP работает, запуская веб-сервер внутри браузера, с которым сервер обменивается данными.

Существуют аналогичные технологии, которые позволяют достичь той же цели в более безопасной, болеебезопасный способ.Microsoft.NET реализует эти виды сервисов как сервисы дуплексного связывания в WCF, сохраняя соединение между клиентом и сервером открытым после его создания (вместо запуска отдельного сервера на клиенте).Есть также технология под названием Comet, которая позволяет то же самое.

1 голос
/ 01 июля 2010

Я посмотрел на источник обратного HTTP, с которым вы связались.Реализация состоит из двух частей:

  1. HTTP-ретранслятор.Этот размещен на сайте reversehttp.net.Он просто ожидает запросов к определенному URL (тому, который сгенерирован) и перенаправляет его на канал (см. 2).Затем он ожидает на другом канале (см. 2) и передает его запрашивающей стороне.

  2. HTTP-сервер JavaScript.«Клиентский сервер» опрашивает «серверный сервер» на предмет входящих запросов с использованием Ajax.Затем, когда вы запросили URL-адрес на «серверном сервере» и он будет перенаправлен на канал, он будет отправлен на «клиентский сервер».Затем клиентский сервер проанализирует исходный HTTP-запрос из запроса на шаге 1, создаст ответ (HTTP-ответ).Этот ответ будет отправлен обратно на «серверный сервер», который в конечном итоге попадает в канал, который отправляет фактический ответ обратно запрашивающей стороне.

Это вовсе не размещение реального HTTP-сервера наклиент.Это требует открытого порта 80, которого у большинства людей нет.Если вы находитесь за NAT или брандмауэром, он будет заблокирован любым способом, если он настроен правильно.

Полагаю, использование длинного опроса или Comet является лучшей идеей, чем использование этого.Затраты на синтаксический анализ HTTP-заголовков на клиенте довольно громоздки.

В спецификации описан способ ретрансляции HTTP-запросов.Это будет сделано путем установки заголовка Content-Type любого запроса к «серверу сервера» на message/http.Я думаю, что в любом случае есть лучшие решения для проксирования или ретрансляции HTTP-запросов, просто изменив поле Host объекта «be-relay-to», добавив специальное поле, содержащее некоторую ссылку на исходного отправителя и путь, по которому он прошел, иотправка измененного HTTP-запроса на следующий сервер.Затем получатель отправит запрос просто обратно, и получатель ищет специальное поле, всплывает его происхождение и передает ответ дальше в цепочке.

1 голос
/ 01 июля 2010

Просто просматривая страницу: мое чтение таково, что вместо, скажем, веб-браузера, запрашивающего обновления и извлечения любых новых данных, вместо этого веб-сервер помещает новые данные наклиент, когда он станет доступным.

Для приложений, требующих быстрого ответа на любые новые данные, это устранит большую часть трафика, вызванного повторным опросом.

0 голосов
/ 01 июля 2010

Из некоторых демонстраций (например, , этой ) видно, что она построена поверх стандартного интерфейса в стиле кометы.Реализация просто представляет собой полный HTTP-сервер для клиента.

Таким образом, в вашем javascript "похоже, что" вы используете веб-сервер, который отвечает на запросы "http://reversehttp.net/demo12345/", нов действительности запросы передаются от «реального» веб-сервера через кометные запросы к клиенту javascript, работающему в браузере и обратно.

При таком описании это выглядит довольно неэффективно, но если учесть,в большинстве случаев клиент и сервер будут работать на одном и том же компьютере (так что только два компьютера общаются друг с другом), тогда неэффективность в основном исчезает.

...