RSS подталкивает или подтягивает обновления?

Обратите внимание: хотя я упоминаю Java 8, я думаю, что ответ здесь действительно не зависит от языка.


Я создаю простой веб-сервис Java 8, который объединяет RSS-каналы по разным темам и делает их содержимое доступным по запросу. Я никогда раньше не работал с RSS, и все видео, которые я нашел, посвящены только тому, как сгенерировать RSS-файл для вашего хромого блога, и все статьи, которые я нашел на "Java and RSS", являются просто примеры разбора XML.

Мне любопытно: RSS работает как push или pull?

  • Под «толчком» я имею в виду: скажем, «RSS-канал A» публикует обновление своего RSS-файла на своей службе (скажем, http://rss-a.example.com/rss/news.rss). Посылает ли их сервер каким-то образом сообщение моему бэкэнду, предупреждая меня о том, что обновление готово ?; или
  • Под «вытягиванием» я имею в виду: отвечает ли мой бэкэнд только за проверку связи всех URL-адресов RSS-канала каждые n секунд и получение нового контента по мере его публикации?

Кроме того, как библиотеки Java, такие как ROME, подключаются к упомянутой выше архитектуре push / pull?


person smeeb    schedule 05.12.2017    source источник


Ответы (2)


RSS - это просто формат данных. Больше ничего. Он не толкает и не тянет.

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

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

person Quentin    schedule 07.12.2017
comment
Спасибо @Quentin (+1) - возможно, типичное решение работает так, может быть (???): (1) Поставщик контента размещает файл *.rss (который, как я полагаю, является XML) на какой-то веб-ссылке . (2) Некоторый процесс (клиент RSS за отсутствием лучшего термина) извлекает файл RSS и сверяется с его данными, чтобы узнать, как часто он должен проверять тот же файл RSS на наличие обновлений / изменений. (3) Периодически файл RSS извлекает файл RSS, анализирует его, извлекает из него обновленное содержимое и делает с этим новым содержимым все, что захочет. Да? Или я далеко? - person smeeb; 07.12.2017
comment
да. Если предположить, что RSS-движок достаточно умный. Некоторые будут просто опрашивать по фиксированной ставке. - person Quentin; 07.12.2017
comment
Большое спасибо за это подтверждение, заключительные дополнения (обещаю!): Эта библиотека ROME (ссылка выше) является библиотекой Java, но все термины на ее домашней странице кажутся общими для RSS. (1) Похоже, у них есть модуль сборщика данных который может считывать удаленные файлы RSS (через HTTP GET) в некоторое представление файла RSS в памяти, да? И (2) у них также есть модуль Propono который является своего рода реализацией протокола публикации Atom ... как Atom подключается к уравнению RSS? - person smeeb; 07.12.2017
comment
Существует полдюжины полусовместимых версий RSS, большинство из которых не совсем подходят для множества вариантов использования. Atom - это спецификация, которая возникла, когда люди извлекли уроки из ошибок RSS и попытались создать что-то лучшее. Любая приличная библиотека RSS тоже справится с Atom. - person Quentin; 07.12.2017

Если вы пишете программное обеспечение, которому требуется уведомление в реальном времени об изменении RSS или Atom-канала, вы можете использовать протоколы WebSub или RssCloud.

WebSub когда-то назывался PubSubHubbub. Существует учетная запись GitHub с дополнительной информацией о протоколе и некоторым кодом для PHP и WordPress, который его использует.

person rcade    schedule 12.01.2018