Как я могу использовать опцию подписчика?

Я начал с Pubsubhubbub (и все о вещах в реальном времени), но у меня возникли проблемы с опцией подписчика.

Я пытаюсь разработать веб-приложение на PHP, чтобы:

  1. Подписать RSS (ранее опубликованный) на хаб ( http://pubsubhubbub.appspot.com/);
  2. Чтение уведомлений (обновлений) из Хаба по подписке; без успеха!!!:(

Я проверяю, что существует библиотека в php для подписчика (в Git), но использование этой библиотеки не может заставить работать подписку (получаю ошибку 409!).

Как я могу это сделать?

3 ответа

Это старый вопрос, и связанная с ним библиотека PHP имеет много недостатков.

Рекомендуемый подписчик PHP в вики Google Code - PuSHSubscriber:

http://github.com/lxbarth/PuSHSubscriber/

ОБНОВИТЬ:

Я подписал подписчика PuSHS: http://github.com/bobdia/PuSHSubscriber

Я сделал несколько несовместимых изменений с оригиналом. Простую реализацию можно найти в каталоге / example. Это не предназначено для реального использования, только для демонстрационных целей. Я надеюсь, что вы найдете это полезным.

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

Абонентское приложение должно сделать 2 вещи:

  • Подтвердите подписку: концентратор проверит намерение подписчика. Это запрос GET
  • Разобраться с входящими пингами. Это запрос POST.

Итак, начнем:

  1. Разместите скрипт где-нибудь в сети (он должен быть доступен из-за брандмауэра), который должен быть связным для обработки запросов GET от хаба. Убедитесь, что это только повторяет hub.challenge параметр, который он получает в теле ответа и возвращает 200.
  2. Отправьте следующее из вашей командной строки: curl -X POST http://pubsubhubbub.appspot.com/ -d'hub.mode=subscribe' -d'hub.verify=sync' -d'hub.topic=http://the.feed.url' -d'hub.callback=http://the.script.url' -D-
  3. Вы должны увидеть входящий запрос на проверку подлинности в сценарии. В идеале (если вы выполнили шаг 1, он должен повторить вызов hub.challenge и вернуть 200.

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

Потом...

  1. Ваш скрипт получит запрос POST. Это уведомление о новом контенте!
  2. Разобрать необработанное тело (XML) этого запроса POST, он содержит канал, только с новыми записями.
  3. Делайте все, что нужно, с разобранным содержимым (сохраняйте в базу данных и т. Д.).

Надеюсь, это поможет. Вы также можете использовать этот инструмент для отладки вашей подписки, если вам нужна помощь.

Некоторый код, который может быть полезен, с хорошими документами:

Пример кормового агрегатора:

Другие вопросы по тегам