如何使用订户选项?

时间:2010-01-15 15:19:09

标签: php real-time subscriber pubsubhubbub

我现在开始使用Pubsubhubbub(以及所有关于实时的东西),但我在使用Subscriber选项时遇到了麻烦。

我正在尝试用PHP开发一个webapp:

  1. 订阅RSS(以前发布)到集线器(http://pubsubhubbub.appspot.com/);
  2. 从Hub读取订阅的通知(更新); 没有成功! :(
  3. 我验证php to the Subscriber(在Git中)存在一个库,但是 使用此lib无法使订阅工作(获得409错误!)。

    我该怎么做?

3 个答案:

答案 0 :(得分:4)

这是一个老问题,与ddluis链接的PHP库存在许多缺陷。

Google Code wiki中推荐的PHP订阅者是PuSHSubscriber:

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

<强>更新

我分叉了PuSHSubscriber:http://github.com/bobdia/PuSHSubscriber

我与原版进行了一些不兼容的更改。可以在/example目录中找到一个简单的实现。这不是为了实际使用,仅用于演示目的。我希望你觉得它很有用。

答案 1 :(得分:3)

我要尝试的第一件事就是忘记图书馆并试着了解订户背景中发生的事情。构建一个可以一起处理所有这些的脚本应该非常简单。

订阅者应用程序必须做两件事:

  • 确认该标记:集线器将验证该标记的意图。这是一个GET请求
  • 处理传入的ping。这是一个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。
  4. 如果这一切都很好,你发送的卷曲请求应该告诉你集线器返回了204.如果你得到任何其他内容,请检查响应的正文,它会指出你出了什么问题。

    ...后来

    1. 您的脚本将收到POST请求。这是新内容的通知!
    2. 解析此POST请求的原始主体(XML),它包含feed,仅包含新条目。
    3. 做解析内容需要做的事情(保存到数据库等等)。
    4. 我希望这会有所帮助。您可also use this tool调试订阅,需要帮助。

答案 2 :(得分:2)