PubSubHubbub是一种基于HTTP的发布-订阅协议,通过引入Hub中心实现RSS/Atom内容的实时推送。发布者在更新内容后通知Hub,Hub立即向所有订阅者推送更新,避免了传统轮询的延迟与资源浪费。实现步骤包括:在Feed中声明Hub地址;订阅者向Hub注册回调地址;发布者更新时通知Hub;Hub抓取并转发最新内容给订阅者。该协议曾广泛用于WordPress、Medium、Feedly等平台,现仍适用于自建博客与去中心化网络,支持通过插件、静态网站构建或CI/CD Webhook集成。关键在于确保回调接口可处理验证与POST数据。

RSS本身是一种基于拉取(pull)模式的内容分发格式,订阅者需要定期轮询源地址来检查更新。而PubSubHubbub(简称PuSH)是一种建立在RSS/Atom之上的基于推送的协议,它让内容发布者在更新文章后,主动通知订阅系统,从而实现近乎实时的内容更新。
PubSubHubbub 是什么?
PubSubHubbub 是一种开放的、基于HTTP的“发布-订阅-中心”通信协议。它引入了一个中间角色——Hub(中心服务器),用来协调内容发布者和订阅者之间的实时通信。
工作流程如下:
- 发布者(如博客平台)在更新内容后,向注册的Hub发送通知。
- Hub收到更新通知后,立即向所有已订阅该Feed的订阅者推送最新内容。
- 订阅者(如阅读器或聚合服务)无需轮询,即可实时接收更新。
这大幅减少了延迟,同时降低了网络资源消耗(避免频繁轮询)。
如何实现 RSS 内容的实时推送?
要通过 PubSubHubbub 实现 RSS 实时更新,需完成以下步骤:
1. 发布者配置 Feed 并声明 Hub在你的 RSS 或 Atom 订阅源中加入 Hub 声明,告诉订阅者“我支持推送”。例如,在 Atom feed 中添加:
这表示你使用 Google 的公共 Hub 服务(也可自建 Hub)。
2. 订阅者向 Hub 发起订阅请求当用户订阅你的 Feed 时,订阅服务不会直接轮询你的 RSS 地址,而是向你在 Feed 中声明的 Hub 发起一个订阅请求,包含:
- 要订阅的 Feed URL
- 自己的回调地址(Callback URL),即接收推送内容的接口
- 订阅验证令牌(可选)
Hub 会向你的服务器确认订阅有效性(通过 HTTP 验证)。
当你发布新文章后,立即向 Hub 发送一个 POST 请求,通知它你的 Feed 已更新。例如:
POST https://pubsubhubbub.appspot.com/publish Content-Type: application/x-www-form-urlencoded hub.mode=publish&hub.url=https://yourblog.com/feed
Hub 收到后,会抓取你的最新 Feed 内容。
4. Hub 推送更新给所有订阅者Hub 解析你的 Feed,将最新条目以 POST 请求形式发送到每个订阅者的回调地址。数据通常是 Atom 或 RSS 格式。
订阅者收到后解析内容,更新本地缓存或通知用户。
实际应用与现状
PubSubHubbub 曾被广泛用于 WordPress 博客、Medium(早期)、Feedly 等服务,以提升订阅体验。虽然近年来部分大型平台转向自有推送机制(如 WebSocket 或专用 API),但 PuSH 仍适用于自建博客、独立媒体和去中心化内容网络。
主流支持方式:
- WordPress 插件(如 "Super Subs" 或 "PubSubHubbub")可自动集成。
- 静态网站可通过构建后调用 Hub 的 publish 接口实现推送。
- 使用 Webhook 在 CI/CD 流程中触发内容更新通知。
基本上就这些。通过引入 Hub 中心,PubSubHubbub 让原本被动的 RSS 变得实时响应,不复杂但容易忽略细节,比如回调地址必须能处理 POST 和验证请求。










