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