pubsubhubbub

felix schwenzel in notiert

kürz­lich frag­te tors­ten kleinz:

Lebt pubsubhubbub noch?

mei­ne ant­wort lau­te­te:

pubsubhubbub lebt noch, so wie RSS noch lebt. aber die noch erstaunlichere nachricht ist: es funktioniert.

pubsub­hub­bub ist nun schon ein paar jah­re alte, aber vor ein paar wo­chen, ent­schied ich mich, dass es nun zeit sei das auch mal auf wir­res.net zu im­ple­men­tie­ren. der grund hing mit dem in­die­web zu­sam­men, dass sehr RSS-un­af­fin ist, die­se push-tech­no­lo­gie aber für die be­nach­rich­ti­gung von ein paar in­die­web-rea­dern be­nutzt.

im prin­zip funk­tio­niert pubsub­hub­bub so: ich an­non­cie­re auf mei­nen sei­ten, oder mei­nen feeds, wel­chen pubsub­hub­bub-ser­ver (hub) ich be­nut­ze (so dass an­de­re hubs dort be­nach­rich­ti­gun­gen abon­nie­ren kön­nen) und pin­ge „mei­nen“ hub an, so­bald ei­ner mei­ner feeds (oder mei­ne sei­te) ak­tua­li­sert wur­den. da­mit weiss erst­mal nur mein hub be­scheid, aber da auch an­de­re hubs mei­ne ak­tua­li­sie­run­gen bei „mei­nem“ hub abon­nie­ren kön­nen, kön­nen die be­nach­rich­ti­gun­gen kas­ka­die­ren, von ei­nem hub zum nächs­ten wan­dern.

prak­tisch sieht das so aus, dass ich zum bei­spiel mei­nen haupt-RSS-feed bei su­per­feedr.com abon­nie­ren kann — oder ein rez­pet bei ifttt.com bau­en kann, dass et­was tut so­bald mein feed ak­tua­li­siert wird — und su­per­feedr mil­li­se­kun­den nach ei­nem up­date be­scheid weiss, ob­wohl ich su­per­feedr gar nicht an­pin­ge.

in der tat be­nutzt ifttt su­per­feedr ge­nau da­für: so­bald ein abon­nier­ter feed ak­tua­li­siert wird, weiss ifttt im sel­ben mo­ment be­scheid, vor­aus­ge­setzt der feed sagt ir­gend­ei­nem pubsub­hub­bub-hub be­scheid (ping), an­sons­ten dau­ert es ein paar mi­nu­ten, bin su­per­feedr den feed crawlt (ring).

wir­res.net pingt goog­le’s hub an (mit ein paar zei­len code und der php-klas­se von pfef­fer­le). ein ping für je­den feed, der ak­tua­li­siert wird. in mei­nem fall sind das nicht nur der haupt­feed, son­dern auch die ka­te­go­rie-feeds der ka­te­go­rien, in de­nen ein ar­ti­kel ge­spei­chert ist.

um zur ur­sprungs­fra­ge und ant­wort zu­rück­zu­kom­men. pubsub­hub­bub funk­tio­niert so gut, dass die­ser ar­ti­kel, den ich heu­te um 7 uhr (au­to­ma­tisch) ver­öf­fent­licht habe, be­reits um 7:03 uhr in den goog­le-such­ergeb­nis­sen auf­tauch­te, drei mi­nu­ten spä­ter:

3 minuten nach veröffentlichung im suchergebnis, auch wenn das angezeigte alter nicht stimmt

pubsub­hub­bub kann üb­ri­gens auch „fett“ pin­gen, also abon­nen­ten nicht nur be­scheid sa­gen, son­dern auch gleich den neu­en in­halt mit­lie­fern. so braucht goog­le’s craw­ler (theo­re­tisch) noch nicht­mal auf wir­res.net nach dem neu­en ar­ti­kel zu craw­len, weil der hub den in­halt in den ping ge­packt hat.

su­per­feedr lohnt üb­ri­gens auch ei­nen zwei­ten blick. su­per­feedr re­agiert nicht nur auf pubsub­hub­bub-pings, son­dern crawlt feeds auch selbst­tä­tig alle paar mi­nu­ten (ring statt ping). so hat su­per­feedr.com qua­si mehr oder we­ni­ger alle (RSS) feeds der welt in sei­nem in­dex und lie­fert sie, auf wunsch, je­dem aus der das möch­te, in­klu­si­ve be­nach­rich­ti­gun­gen. und weil su­per­feedr (qua­si) alle feeds der welt kennt, kann man su­per­feedr auch su­per als stich­wort-alarm und zur re­cher­che nut­zen. su­per­feedr nennt das tra­ckers. theo­re­tisch kos­ten die­se tra­cker geld, aber nur wenn man sich be­pin­gen lässt, ei­nen tra­cker also abon­niert und ei­nen web­hook an­gibt, der ge­pin­gt wer­den soll. wer tra­cker le­dig­lich als RSS/ATOM-feed abo­niert (ohne ping), zahlt nichts.