pubsubhubbub
汪安然
2023-12-01
PubSubHubbub是一个“开放的、服务器对服务器、基于Web-hook的发布/订阅协议,是Atom和RSS的扩展”。凭借该协议,感兴趣的参与者在feed有更新时会收到即时通知。该协议由Google开发,在Google Code中可以找到同名的项目。
PubSubHubbub协议将“拉”机制转变成了“推”机制,客户端不用再定时轮询服务器以查看feed是否有更新。客户端订阅一个Hub,当feed有更新时Hub会即时通知客户端。项目主页上描述的处理过程如下:
feed URL(“主题”)在Atom或RSS的XML文件中使用<link rel="hub" ...>描述自己的Hub服务。Hub可以由feed的发布者运行,也可以作为任何人都能使用的公有Hub。(它支持Atom和RssFeeds)
订阅者(对主题感兴趣的服务器)最初仍照常提取Atom URL。如果Atom文件声明了其Hub,订阅者就不用轮询URL了,而是注册feed的Hub并订阅更新。
订阅者从主题URL声明的Hub中订阅主题URL。
发布者下次更新主题URL时,发布者软件会给Hub发送信息,告知Hub有更新了。
Hub高效地提取发布的feed,并向所有注册的订阅者组播新增或修改了的内容。
Google已经在他们的几个服务中实现了该协议,包括FeedBurner、Reader(共享条目)、Blogger,还有不久前推出的Alerts。该协议是开放的,遵循Apache License 2.0许可。此外,Hub可以在任何服务器上运行而并非限制在Google App Engine上。
Google已经发布了一个Hub的参考实现,可用来测试发布/订阅过程以了解其工作方式。这个视频演示了一个实际使用该协议的例子。