Как использовать опцию подписчика? - PullRequest
11 голосов
/ 15 января 2010

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

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

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

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

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

Ответы [ 3 ]

4 голосов
/ 06 октября 2010

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

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

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

UPDATE:

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

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

3 голосов
/ 17 октября 2010

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

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

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

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

  1. Поместите сценарий где-нибудь в сети (он должен быть доступен из-за брандмауэра), который должен быть готов для обработки GET-запросов от концентратора. Убедитесь, что only повторяет параметр hub.challenge, который он получает в теле ответа и возвращает 200.
  2. Отправьте из своей командной строки следующее: curl -X POST <a href="http://pubsubhubbub.appspot.com/" rel="nofollow">http://pubsubhubbub.appspot.com/</a> -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.

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

Позже ...

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

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

2 голосов
/ 17 октября 2010

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

Пример агрегатора подачи:

...