【问题标题】:How to implement PubSubHubbub?如何实现 PubSubHubub?
【发布时间】:2010-10-02 18:36:09
【问题描述】:

我想知道如何在 PHP 站点中实现PubSubHubbub。我不明白。你能解释一下吗? 我不明白。 发布者通知订阅者和订阅者 - 我的网站?

    <?php

// simple example for the PHP pubsubhubbub Subscriber
// as defined at http://code.google.com/p/pubsubhubbub/
// written by Josh Fraser | joshfraser.com | josh@eventvue.com
// Released under Apache License 2.0

include("PuSHSubscriber.php");

$hub_url = "http://pubsubhubbub.appspot.com";
$callback_url = "url to my site?";

$feed = "feed link";

// create a new subscriber
$s = new Subscriber($hub_url, $callback_url);

// subscribe to a feed
$s->subscribe($feed);
// unsubscribe from a feed
//$s->unsubscribe($feed);

?>

或者我应该在 $hub_url 上发布我的中心?

【问题讨论】:

    标签: php websub


    【解决方案1】:

    看起来您是订阅者,这意味着您希望在 Feed 更新时收到通知。流程如下:

    1. 查找中心网址。提要中应该有一个&lt;link&gt;(或&lt;atom:link&gt;)元素,其中rel="hub"。 href 包含集线器的 url。那里有许多不同的中心!

    2. 实现回调网址。当有新内容可供您使用时,该 url(必须可从外部访问(因此,不是 localhost!)将由集线器调用。它还应该实现验证机制(见下文)

    3. 向集线器执行订阅请求:这是对集线器 URL 的 POST 请求(请参阅 1.),参数如下: hub.topic= hub.callback= hub.mode =subscribe hub.verify=sync(保持同步,因为它更容易调试)。

    4. 中心将向您的回调发送验证请求,并带有 hub.verify_token 参数。然后,您的应用必须回显此参数才能验证订阅。

    5. 如果一切正常,集线器将返回 204,您就可以开始了。如果没有,它将返回 4XX,您应该检查正文,因为它包含失败的指示。

    6. 稍后,一旦订阅得到确认,您将收到 POST 请求,其中包含正文中的更新内容。

    7. (您必须每天重新订阅。实际时间取决于中心告诉您的内容。)

    看起来您使用的是现有库。它应该实现上面的所有步骤。然而,了解幕后发生的事情很重要,因此您可能希望自己实现它。没那么复杂。确保您的回调可以从“外部”访问,并检查 $s-&gt;subscribe($feed); 是否实际上没有返回订阅的结果,因为它会有所帮助。

    如果您需要更完整的 PubSubHubbub 教程,check this one

    祝你好运!

    【讨论】:

    • 谢谢,但是集线器的网址可以是我自己的集线器,而不是 pubsubhubbub.appspot.com 上的那个
    • 什么信息可以让我就新内容致电 pubsubhubbub.appspot.com?
    • 并且没有中心 url 必须是指定的中心...因为中心无法在没有发布者告知的情况下知道提要是否已更新!
    • 即那些在 pubsubhubbub.appspot.com 上的用户可以,如果用户使用 rel="hub" 和 href="pubsubhubbub.appspot.com" 链接并在新内容上通知它?
    • 它将向您推送新内容,作为 Atom/RSS 提要,所以是的,它不包含任何链接。也许最好是自己去看:)
    【解决方案2】:
    • $hub_url 是第 3 方集线器的 url
    • $topic_url 是您订阅的“供稿”
    • $callback_url 是您服务器上的 url,当集线器获取新结果时,应该用新结果 ping。

    希望对你有帮助!

    【讨论】:

    • 好的,Blogger 已启用 pubsubhubbub。我提供了 Blogger 的提要 URL,我有这个脚本,但它不起作用 pubsubhubbub.appspot.com"; $callback_url = "subscriber_example.php"; $feed = "hubexample.blogspot.com/feeds/posts/default"; // 创建一个新订阅者 $s = new Subscriber($hub_url, $callback_url); // 订阅一个订阅源 $s->subscribe($feed); // 取消订阅订阅 //$s->unsubscribe($feed); ?>
    • subscriber_example.php 必须是您服务器上的真实文件,并且可能需要是完整的 url (http://...)
    • 反正你也马上退订了,没什么用。
    • 不,它不适用于 localhost。如果 pubsubhubbub.appspot.com 是您的中心,请从它的角度考虑您要做什么……您是说,当有新数据进入时,请确保让 localhost 知道有新数据。好吧,它说,好的,我要把这个新数据发送到 localhost,但就它而言,localhost 意味着将新数据发送给它自己,这意味着你永远不会得到它。您需要告诉远程服务器(集线器)如何将数据发送回您的实际服务器。为此,您需要一个完整的 url,它将集线器指向您的服务器。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-24
    • 2014-09-06
    • 2013-12-16
    • 2011-02-17
    • 2015-01-03
    相关资源
    最近更新 更多