10

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

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

  1. 订阅中心的 RSS(以前发布)(http://pubsubhubbub.appspot.com/);
  2. 从订阅中心读取通知(更新);没有成功!!!:(

我验证了订阅者(在 Git 中)的 php 中存在一个库,但是使用这个库不能使订阅工作(得到 409 错误!)。

我怎样才能做到这一点?

4

3 回答 3

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。

如果一切正常,您发送的 curl 请求应该会告诉您集线器返回了 204。如果您收到其他任何信息,请检查响应的正文,它会指出您出了什么问题。

之后...

  1. 您的脚本将收到一个 POST 请求。这是新内容的通知!
  2. 解析此 POST 请求的原始正文 (XML),它包含提要,仅包含新条目。
  3. 对解析的内容做任何需要做的事情(保存到数据库中......等)。

我希望这有帮助。您还可以使用此工具来调试您需要帮助的订阅。

于 2010-10-17T09:03:32.083 回答
3

这是一个老问题,链接到的 PHP 库 ddluis 有很多缺陷。

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

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

更新:

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

我做了一些与原版不兼容的更改。一个简单的实现可以在/example目录中找到。这并不意味着实际使用,仅用于演示目的。希望对你有帮助。

于 2010-10-05T21:27:01.043 回答
1

一些可能有用的代码,有好的文档:

饲料聚合器示例:

于 2010-10-17T08:23:22.247 回答