Как я могу использовать опцию подписчика?
Я начал с Pubsubhubbub (и все о вещах в реальном времени), но у меня возникли проблемы с опцией подписчика.
Я пытаюсь разработать веб-приложение на PHP, чтобы:
- Подписать RSS (ранее опубликованный) на хаб ( http://pubsubhubbub.appspot.com/);
- Чтение уведомлений (обновлений) из Хаба по подписке; без успеха!!!:(
Я проверяю, что существует библиотека в php для подписчика (в Git), но использование этой библиотеки не может заставить работать подписку (получаю ошибку 409!).
Как я могу это сделать?
3 ответа
Это старый вопрос, и связанная с ним библиотека PHP имеет много недостатков.
Рекомендуемый подписчик PHP в вики Google Code - PuSHSubscriber:
http://github.com/lxbarth/PuSHSubscriber/
ОБНОВИТЬ:
Я подписал подписчика PuSHS: http://github.com/bobdia/PuSHSubscriber
Я сделал несколько несовместимых изменений с оригиналом. Простую реализацию можно найти в каталоге / example. Это не предназначено для реального использования, только для демонстрационных целей. Я надеюсь, что вы найдете это полезным.
Первое, что я постараюсь, это забыть о библиотеках и попытаться точно понять, что происходит в контексте подписчика. Должно быть действительно очень просто создать скрипт, который обрабатывает все это вместе.
Абонентское приложение должно сделать 2 вещи:
- Подтвердите подписку: концентратор проверит намерение подписчика. Это запрос GET
- Разобраться с входящими пингами. Это запрос POST.
Итак, начнем:
- Разместите скрипт где-нибудь в сети (он должен быть доступен из-за брандмауэра), который должен быть связным для обработки запросов GET от хаба. Убедитесь, что это только повторяет
hub.challenge
параметр, который он получает в теле ответа и возвращает 200. - Отправьте следующее из вашей командной строки:
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-
- Вы должны увидеть входящий запрос на проверку подлинности в сценарии. В идеале (если вы выполнили шаг 1, он должен повторить вызов hub.challenge и вернуть 200.
Если все в порядке, отправленный вами запрос curl должен сообщить вам, что концентратор вернул 204. Если вы получите что-то еще, проверьте текст ответа, и он укажет вам, что пошло не так.
Потом...
- Ваш скрипт получит запрос POST. Это уведомление о новом контенте!
- Разобрать необработанное тело (XML) этого запроса POST, он содержит канал, только с новыми записями.
- Делайте все, что нужно, с разобранным содержимым (сохраняйте в базу данных и т. Д.).
Надеюсь, это поможет. Вы также можете использовать этот инструмент для отладки вашей подписки, если вам нужна помощь.
Некоторый код, который может быть полезен, с хорошими документами:
Пример кормового агрегатора: