Быстрый тест, если веб-страница предлагает асинхронный HTTP?

1

Я извлекаю текущие данные из другой веб-ленты компании. Это простой выбор XML файла через HTTP. Они не предоставили мне много документации - просто URL.

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

Я собирался рекомендовать им, чтобы они настроили какой-то серверный push - предположительно долгосрочное HTTP-соединение с асинхронными обновлениями, отправляемыми сервером. Я не очень хорошо знаком с общими протоколами. Мне пришло в голову, что они уже могут это предложить, и я слишком неосведомлен, чтобы понять.

Существует ли общий веб-протокол для сервера, который перенаправляет HTTP? Если есть, есть ли быстрый способ, я могу проверить, поддерживают ли они его, прежде чем я заставлю себя выглядеть глупо, попросив что-то, что уже доступно.

(Бонусные точки для независимого от платформы решения на основе Python, но я возьму то, что смогу получить.)

  • 0
    Как быстро вы должны знать об изменениях данных? Близко к реальному времени? Если возвращенный размер полезной нагрузки является проблемой для разработчиков серверов, возможно, вы могли бы передать параметр updatedAfter (/ feed ?ifiedAfter = <date>) во время опроса. Таким образом, вы получаете только самые последние фиды.
Теги:
xmlhttprequest
asynchronous
http

4 ответа

1
Лучший ответ

То, что вы хотите, это потоковое HTTP; прочитайте эту страницу. " Comet" это то, что называется этой технологией. Одна из реализаций - Ajax Push Engine (APE); страница, которую я только что дал вам, имеет несколько других.

Теперь я не думаю, что можно автоматически проверить, поддерживает ли сервер технологию push, потому что на данный момент стандартов нет, и используемые протоколы будут зависеть от реализации.

В качестве альтернативы вы можете использовать периодическое обновление ( "опрос" ), а преимущества этого метода: вам не нужно дополнительное программное обеспечение на сервере, и это можно сделать без сотрудничества с сервером, на котором вы проводите опрос (это невозможно использовать Comet, если сервер, который вы запрашиваете, не будет устанавливать его).

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

  • 0
    Я знал Метеор, но APE, кажется, действительно здорово :) спасибо за ссылку человек :)
  • 0
    Как я могу определить, поддерживается ли HTTP Streaming другим веб-сервером?
Показать ещё 2 комментария
1

Чтобы избежать ненужной загрузки, я бы проверял etags и Last-modified заголовки, как описано здесь.

http://diveintopython3.ep.io/http-web-services.html

  • 0
    Спасибо за это предложение. Это было бы улучшением наивного опроса, которым я сейчас занимаюсь. К сожалению, они не поддерживают Last-Modified и If-Modified-Since . Я включу это в список вариантов, когда подойду к ним, так как это может быть легче продать, чем полное решение Comet.
1

Я предлагаю вам прочитать эту статью в Википедии по этому вопросу. То, что вы хотите, конечно, возможно, однако оно не может поддерживаться всеми браузерами.

Это говорит... Я вообще рекомендую отказаться от технологий push в Интернете, поскольку они обезвреживают ресурсы сервера намного быстрее, чем парадигма запроса/ответа.

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

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

  • 0
    Спасибо за ваш ответ. У меня есть несколько разъяснений и комментариев. (1) Браузеры не задействованы. (2) Трудно говорить от имени другой компании, но спрос на этот интерфейс невысок, и обновления достаточно редки, так что он, вероятно, будет дешевле, чем я часто опрашиваю. (3) Тем не менее, я удивлен, что мои опросы заметно влияют на их систему, но их технический персонал, похоже, обеспокоен этим. Я не приближаюсь к уровню типа отказа в обслуживании, и я подозреваю, что их системы просто плохо настроены, чтобы сделать каждый HTTP GET довольно дорогим.
  • 0
    (4) Возможно, я смогу заставить компанию изменить свою практику - например, перезвонить веб-службе, но я хотел быть уверен, что они уже не предлагали то, что я хотел.
Показать ещё 2 комментария
1

Я не знаю ни одного метода тестирования, если веб-сервер поддерживает технологию push.
Вы должны спросить эту компанию, если для предотвращения опроса можно использовать метод Comet.

Для решения на базе кометы на основе python посмотрите здесь.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню