Я извлекаю текущие данные из другой веб-ленты компании. Это простой выбор XML файла через HTTP. Они не предоставили мне много документации - просто URL.
Поскольку мне нужно знать как можно скорее, когда данные изменяются на их сайте, мне нужно часто опросить, что не является удовлетворительным решением для обеих сторон.
Я собирался рекомендовать им, чтобы они настроили какой-то серверный push - предположительно долгосрочное HTTP-соединение с асинхронными обновлениями, отправляемыми сервером. Я не очень хорошо знаком с общими протоколами. Мне пришло в голову, что они уже могут это предложить, и я слишком неосведомлен, чтобы понять.
Существует ли общий веб-протокол для сервера, который перенаправляет HTTP? Если есть, есть ли быстрый способ, я могу проверить, поддерживают ли они его, прежде чем я заставлю себя выглядеть глупо, попросив что-то, что уже доступно.
(Бонусные точки для независимого от платформы решения на основе Python, но я возьму то, что смогу получить.)
То, что вы хотите, это потоковое HTTP; прочитайте эту страницу. " Comet" это то, что называется этой технологией. Одна из реализаций - Ajax Push Engine (APE); страница, которую я только что дал вам, имеет несколько других.
Теперь я не думаю, что можно автоматически проверить, поддерживает ли сервер технологию push, потому что на данный момент стандартов нет, и используемые протоколы будут зависеть от реализации.
В качестве альтернативы вы можете использовать периодическое обновление ( "опрос" ), а преимущества этого метода: вам не нужно дополнительное программное обеспечение на сервере, и это можно сделать без сотрудничества с сервером, на котором вы проводите опрос (это невозможно использовать Comet, если сервер, который вы запрашиваете, не будет устанавливать его).
Для получения дополнительной информации и трюков, чтобы уменьшить использование полосы пропускания при опросе, см. эту страницу. Некоторые из них потребуют некоторых усилий от сервера, на котором вы проводите опрос.
Чтобы избежать ненужной загрузки, я бы проверял etags и Last-modified заголовки, как описано здесь.
Last-Modified
и If-Modified-Since
. Я включу это в список вариантов, когда подойду к ним, так как это может быть легче продать, чем полное решение Comet.
Я предлагаю вам прочитать эту статью в Википедии по этому вопросу. То, что вы хотите, конечно, возможно, однако оно не может поддерживаться всеми браузерами.
Это говорит... Я вообще рекомендую отказаться от технологий push в Интернете, поскольку они обезвреживают ресурсы сервера намного быстрее, чем парадигма запроса/ответа.
Возможно, есть другой способ? Часто опрос, чтобы узнать, изменился ли файл, по крайней мере, небольшая полезная нагрузка... почему это неудовлетворительно для обеих сторон?
Если вы не можете заставить другую компанию изменить некоторые из своих практик - возможно, для FTP вы новый файл или позвоните в веб-сервис, чтобы ваша компания узнала, что файл был изменен - вы можете застрять в опросе.