SlideShare a Scribd company logo
1 of 45
Download to read offline
Realtime with PuSH and Feeds

                            Alex Barth
                                              25. aug 9:00
                                              Acquia


Tuesday, August 24, 2010
Development Seed

                           Managing News



Tuesday, August 24, 2010
Are we there yet?

                                http://www.flickr.com/photos/geraldbrazell/4562022876/
Tuesday, August 24, 2010
Are we there yet?
                                     Are we there yet?
                                     Are we there yet?
                                     Are we there yet?
                                     Are we there yet?
                           rss.xml

          Publisher                                  Subscriber



        Yes. Here you are.


                                     Are we there yet?

Tuesday, August 24, 2010
Ask developmentseed.org every
            30 minutes
for a new blog post, you’ll download
               11 MB
              for about
                  9K
         blog posts a week.

Tuesday, August 24, 2010
Do that for
                            100 similar blogs
                           and you’ll download
                           1G of data a week
                             just for polling.


Tuesday, August 24, 2010
What’s worse:




           Polling many feeds will back up.

                           http://www.flickr.com/photos/geraldbrazell/4562022876/
Tuesday, August 24, 2010
Publish and Subscribe




                                  http://www.flickr.com/photos/geraldbrazell/4562022876/
Tuesday, August 24, 2010
Notification

          Publisher                      Subscriber




Tuesday, August 24, 2010
PubSubHubbub
                        is a
           Publish and Subscribe standard



Tuesday, August 24, 2010
It solves two problems




Tuesday, August 24, 2010
Problem 1: Tons of notifications   Subscriber
                                  Subscriber
                                  Subscriber
                                  Subscriber
                                  Subscriber
      Publisher
                                  Subscriber
                                  Subscriber
                                  Subscriber
                                  Subscriber

Tuesday, August 24, 2010
                                  Subscriber
Problem 1: Tons of notifications   Subscriber
Solution: Use a Hub               Subscriber
                                  Subscriber
                                  Subscriber
                                  Subscriber
      Publisher            Hub
                                  Subscriber
                                  Subscriber
                                  Subscriber
                                  Subscriber

Tuesday, August 24, 2010
                                  Subscriber
Problem 2: The thundering herd   Subscriber
                                 Subscriber
                                 Subscriber
                                 Subscriber
                                 Subscriber
      Publisher
                                 Subscriber
                                 Subscriber
                                 Subscriber
                                 Subscriber

Tuesday, August 24, 2010
                                 Subscriber
Problem 2: The thundering herd
Solution: Send what’s changed (fat ping).




         Hub                                Subscriber

                              nges
                           Cha


Tuesday, August 24, 2010
And what about RSS Cloud?




Tuesday, August 24, 2010
PubSubHubbub is a specification




Tuesday, August 24, 2010
It’s all HTTP and XML.




Tuesday, August 24, 2010
Tuesday, August 24, 2010
1. Subscriber POSTs subscription request to the Hub. The
    request contains the endpoint URL where the Hub should
    POST new updates.
                           I want to subscribe to
                           feed X, send updates
                                to this URL:



      Publisher            Hub                      Subscriber




                               From http://code.google.com/p/pubsubhubbub/
Tuesday, August 24, 2010
2. Hub POSTs to the endpoint URL to verify the request was
    authentic; Subscriber responds with confirmation to the Hub.

                               Hey there! Did
                             you really send this
                                  request?



      Publisher             Hub                      Subscriber


                                Yup, that was really
                                  me, not a DoS
                                     attacker.
                                From http://code.google.com/p/pubsubhubbub/
Tuesday, August 24, 2010
3. Publisher notifies Hub about updates by POSTing feed URLs
    to the Hub; Hub pulls the feed again to find new entries.


                           I have new content
                            for feed X for you!



      Publisher                               Hub                       Subscriber


                                                  Give me your latest
                      Here you go.                content for feed X,
                                                       please.
                                                   From http://code.google.com/p/pubsubhubbub/
Tuesday, August 24, 2010
4. When Hub receives new update to feed X, it POSTs the
    update to the Subscriber’s endpoint URL.

                               New update to
                            feed X - here you go:




      Publisher             Hub                     Subscriber




                               From http://code.google.com/p/pubsubhubbub/
Tuesday, August 24, 2010
5. If feed X has multiple subscribers, the Hub sends updates to
    all of them. This reduces load on the Publisher.

                                New update to
                             feed X - here you go:


                                                       Subscriber
      Publisher              Hub                       Subscriber
                                                       Subscriber
                                                       Subscriber
                                                       Subscriber

Tuesday, August 24, 2010
                                                       Subscriber
                                 From http://code.google.com/p/pubsubhubbub/
Questions?




Tuesday, August 24, 2010
Who supports it?




Tuesday, August 24, 2010
Wordpress




Tuesday, August 24, 2010
Feedburner




Tuesday, August 24, 2010
Blogger (Google, right?)




Tuesday, August 24, 2010
Reference Hub




Tuesday, August 24, 2010
Hub: Superfeedr




Tuesday, August 24, 2010
Drupal as subscriber: Feeds




Tuesday, August 24, 2010
Drupal as publisher: 404




Tuesday, August 24, 2010
Check out Views content cache




Tuesday, August 24, 2010
Drupal as hub: PuSH Hub
                                (onboard hub)




Tuesday, August 24, 2010
Demo time




Tuesday, August 24, 2010
function pusher_menu() {
        $items = array();
        $items['realtime.xml'] = array(
           'title' => 'Realtime RSS feed',
           'page callback' => 'pusher_feed_page',
           'access arguments' => array('access content'),
           'type' => MENU_CALLBACK,
        );
        return $items;
      }

      function pusher_feed_page() {
        drupal_set_header(
          'Content-Type: application/rss+xml; charset=utf-8');
        print pusher_feed();
      }




Tuesday, August 24, 2010
function pusher_nodeapi($node, $op) {
        if ($op == 'insert' || $op == 'update') {
          if ($node->status && $node->promote) {
            pusher_notify($node->nid);
          }
        }
      }

      function pusher_notify($nid) {
        node_load(NULL, NULL, TRUE);
        $changed = pusher_feed(array($nid));
        push_hub_notify(url('realtime.xml',
          array('absolute' => TRUE)), $changed, TRUE);
      }




Tuesday, August 24, 2010
David Weinberger:


                           “Small pieces loosely joined”




Tuesday, August 24, 2010
PuSHing users




Tuesday, August 24, 2010
Mapping content between sites




Tuesday, August 24, 2010
Check out


       • PubSubHubbub spec
       • Feeds module (PuSHSubscriber.inc)
       • PuSH Hub module (PuSHHub.inc)



Tuesday, August 24, 2010
What’s next?
       • Solidify Subscriber support
       • Implement Publisher support
       • Solidify content mapping
         standards
       • Security: PuSH + OAuth
       • Content type independence

Tuesday, August 24, 2010
Thank you.

                           Questions?



Tuesday, August 24, 2010
http://cph2010.drupal.org/node/15363




Tuesday, August 24, 2010

More Related Content

More from Development Seed

Rasters are not Monsters - GeoMTL 2019
Rasters are not Monsters - GeoMTL 2019Rasters are not Monsters - GeoMTL 2019
Rasters are not Monsters - GeoMTL 2019Development Seed
 
GeoDC: Better data for better elections in Afghanistan
GeoDC: Better data for better elections in AfghanistanGeoDC: Better data for better elections in Afghanistan
GeoDC: Better data for better elections in AfghanistanDevelopment Seed
 
Cartography with TileMill, PostGIS, and OpenStreetMap
Cartography with TileMill, PostGIS, and OpenStreetMapCartography with TileMill, PostGIS, and OpenStreetMap
Cartography with TileMill, PostGIS, and OpenStreetMapDevelopment Seed
 
Nonprofit Mapping at Net2DC Meetup
Nonprofit Mapping at Net2DC MeetupNonprofit Mapping at Net2DC Meetup
Nonprofit Mapping at Net2DC MeetupDevelopment Seed
 
Tilemill: Making Custom Transit Maps
Tilemill: Making Custom Transit MapsTilemill: Making Custom Transit Maps
Tilemill: Making Custom Transit MapsDevelopment Seed
 
Mapnik2 Performance, September 2011
Mapnik2 Performance, September 2011Mapnik2 Performance, September 2011
Mapnik2 Performance, September 2011Development Seed
 
Alternative Mapping on iOS
Alternative Mapping on iOSAlternative Mapping on iOS
Alternative Mapping on iOSDevelopment Seed
 
Fast Map Interaction without Flash
Fast Map Interaction without FlashFast Map Interaction without Flash
Fast Map Interaction without FlashDevelopment Seed
 
Tech@State Preview of Designing Custom Maps with TileMill
Tech@State Preview of Designing Custom Maps with TileMillTech@State Preview of Designing Custom Maps with TileMill
Tech@State Preview of Designing Custom Maps with TileMillDevelopment Seed
 
ReliefWeb Drupal 7 Build Plan
ReliefWeb Drupal 7 Build PlanReliefWeb Drupal 7 Build Plan
ReliefWeb Drupal 7 Build PlanDevelopment Seed
 
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying ConfigurationIBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying ConfigurationDevelopment Seed
 
Offline Mapping: International Crisis
Offline Mapping: International CrisisOffline Mapping: International Crisis
Offline Mapping: International CrisisDevelopment Seed
 
Aegir one drupal to rule them all
Aegir one drupal to rule them allAegir one drupal to rule them all
Aegir one drupal to rule them allDevelopment Seed
 
Backstage with Drupal localization- Part 2
Backstage with Drupal localization- Part 2Backstage with Drupal localization- Part 2
Backstage with Drupal localization- Part 2Development Seed
 
For every site a make file
For every site a make fileFor every site a make file
For every site a make fileDevelopment Seed
 
Drupal Distributions: The Dos and Don'ts:
Drupal Distributions: The Dos and Don'ts:Drupal Distributions: The Dos and Don'ts:
Drupal Distributions: The Dos and Don'ts:Development Seed
 

More from Development Seed (20)

Rasters are not Monsters - GeoMTL 2019
Rasters are not Monsters - GeoMTL 2019Rasters are not Monsters - GeoMTL 2019
Rasters are not Monsters - GeoMTL 2019
 
GeoDC: Better data for better elections in Afghanistan
GeoDC: Better data for better elections in AfghanistanGeoDC: Better data for better elections in Afghanistan
GeoDC: Better data for better elections in Afghanistan
 
Cartography with TileMill, PostGIS, and OpenStreetMap
Cartography with TileMill, PostGIS, and OpenStreetMapCartography with TileMill, PostGIS, and OpenStreetMap
Cartography with TileMill, PostGIS, and OpenStreetMap
 
Nonprofit Mapping at Net2DC Meetup
Nonprofit Mapping at Net2DC MeetupNonprofit Mapping at Net2DC Meetup
Nonprofit Mapping at Net2DC Meetup
 
Famine Mapping with USAID
Famine Mapping with USAIDFamine Mapping with USAID
Famine Mapping with USAID
 
Tilemill: Making Custom Transit Maps
Tilemill: Making Custom Transit MapsTilemill: Making Custom Transit Maps
Tilemill: Making Custom Transit Maps
 
Mapnik2 Performance, September 2011
Mapnik2 Performance, September 2011Mapnik2 Performance, September 2011
Mapnik2 Performance, September 2011
 
Alternative Mapping on iOS
Alternative Mapping on iOSAlternative Mapping on iOS
Alternative Mapping on iOS
 
Transparency camp
Transparency campTransparency camp
Transparency camp
 
Fast Map Interaction without Flash
Fast Map Interaction without FlashFast Map Interaction without Flash
Fast Map Interaction without Flash
 
Tech@State Preview of Designing Custom Maps with TileMill
Tech@State Preview of Designing Custom Maps with TileMillTech@State Preview of Designing Custom Maps with TileMill
Tech@State Preview of Designing Custom Maps with TileMill
 
ReliefWeb Drupal 7 Build Plan
ReliefWeb Drupal 7 Build PlanReliefWeb Drupal 7 Build Plan
ReliefWeb Drupal 7 Build Plan
 
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying ConfigurationIBM Drupal Users Group Discussion on Managing and Deploying Configuration
IBM Drupal Users Group Discussion on Managing and Deploying Configuration
 
Offline Mapping: International Crisis
Offline Mapping: International CrisisOffline Mapping: International Crisis
Offline Mapping: International Crisis
 
Aegir one drupal to rule them all
Aegir one drupal to rule them allAegir one drupal to rule them all
Aegir one drupal to rule them all
 
Backstage with Drupal localization- Part 2
Backstage with Drupal localization- Part 2Backstage with Drupal localization- Part 2
Backstage with Drupal localization- Part 2
 
For every site a make file
For every site a make fileFor every site a make file
For every site a make file
 
Drupal Distributions: The Dos and Don'ts:
Drupal Distributions: The Dos and Don'ts:Drupal Distributions: The Dos and Don'ts:
Drupal Distributions: The Dos and Don'ts:
 
Open Atrium
Open Atrium Open Atrium
Open Atrium
 
Opening Large Data Sets
Opening Large Data SetsOpening Large Data Sets
Opening Large Data Sets
 

Recently uploaded

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Enterprise Knowledge
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):comworks
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyAlfredo García Lavilla
 

Recently uploaded (20)

DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024Designing IA for AI - Information Architecture Conference 2024
Designing IA for AI - Information Architecture Conference 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):CloudStudio User manual (basic edition):
CloudStudio User manual (basic edition):
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Commit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easyCommit 2024 - Secret Management made easy
Commit 2024 - Secret Management made easy
 

Go real time with pubsubhubbub and feeds

  • 1. Realtime with PuSH and Feeds Alex Barth 25. aug 9:00 Acquia Tuesday, August 24, 2010
  • 2. Development Seed Managing News Tuesday, August 24, 2010
  • 3. Are we there yet? http://www.flickr.com/photos/geraldbrazell/4562022876/ Tuesday, August 24, 2010
  • 4. Are we there yet? Are we there yet? Are we there yet? Are we there yet? Are we there yet? rss.xml Publisher Subscriber Yes. Here you are. Are we there yet? Tuesday, August 24, 2010
  • 5. Ask developmentseed.org every 30 minutes for a new blog post, you’ll download 11 MB for about 9K blog posts a week. Tuesday, August 24, 2010
  • 6. Do that for 100 similar blogs and you’ll download 1G of data a week just for polling. Tuesday, August 24, 2010
  • 7. What’s worse: Polling many feeds will back up. http://www.flickr.com/photos/geraldbrazell/4562022876/ Tuesday, August 24, 2010
  • 8. Publish and Subscribe http://www.flickr.com/photos/geraldbrazell/4562022876/ Tuesday, August 24, 2010
  • 9. Notification Publisher Subscriber Tuesday, August 24, 2010
  • 10. PubSubHubbub is a Publish and Subscribe standard Tuesday, August 24, 2010
  • 11. It solves two problems Tuesday, August 24, 2010
  • 12. Problem 1: Tons of notifications Subscriber Subscriber Subscriber Subscriber Subscriber Publisher Subscriber Subscriber Subscriber Subscriber Tuesday, August 24, 2010 Subscriber
  • 13. Problem 1: Tons of notifications Subscriber Solution: Use a Hub Subscriber Subscriber Subscriber Subscriber Publisher Hub Subscriber Subscriber Subscriber Subscriber Tuesday, August 24, 2010 Subscriber
  • 14. Problem 2: The thundering herd Subscriber Subscriber Subscriber Subscriber Subscriber Publisher Subscriber Subscriber Subscriber Subscriber Tuesday, August 24, 2010 Subscriber
  • 15. Problem 2: The thundering herd Solution: Send what’s changed (fat ping). Hub Subscriber nges Cha Tuesday, August 24, 2010
  • 16. And what about RSS Cloud? Tuesday, August 24, 2010
  • 17. PubSubHubbub is a specification Tuesday, August 24, 2010
  • 18. It’s all HTTP and XML. Tuesday, August 24, 2010
  • 20. 1. Subscriber POSTs subscription request to the Hub. The request contains the endpoint URL where the Hub should POST new updates. I want to subscribe to feed X, send updates to this URL: Publisher Hub Subscriber From http://code.google.com/p/pubsubhubbub/ Tuesday, August 24, 2010
  • 21. 2. Hub POSTs to the endpoint URL to verify the request was authentic; Subscriber responds with confirmation to the Hub. Hey there! Did you really send this request? Publisher Hub Subscriber Yup, that was really me, not a DoS attacker. From http://code.google.com/p/pubsubhubbub/ Tuesday, August 24, 2010
  • 22. 3. Publisher notifies Hub about updates by POSTing feed URLs to the Hub; Hub pulls the feed again to find new entries. I have new content for feed X for you! Publisher Hub Subscriber Give me your latest Here you go. content for feed X, please. From http://code.google.com/p/pubsubhubbub/ Tuesday, August 24, 2010
  • 23. 4. When Hub receives new update to feed X, it POSTs the update to the Subscriber’s endpoint URL. New update to feed X - here you go: Publisher Hub Subscriber From http://code.google.com/p/pubsubhubbub/ Tuesday, August 24, 2010
  • 24. 5. If feed X has multiple subscribers, the Hub sends updates to all of them. This reduces load on the Publisher. New update to feed X - here you go: Subscriber Publisher Hub Subscriber Subscriber Subscriber Subscriber Tuesday, August 24, 2010 Subscriber From http://code.google.com/p/pubsubhubbub/
  • 26. Who supports it? Tuesday, August 24, 2010
  • 32. Drupal as subscriber: Feeds Tuesday, August 24, 2010
  • 33. Drupal as publisher: 404 Tuesday, August 24, 2010
  • 34. Check out Views content cache Tuesday, August 24, 2010
  • 35. Drupal as hub: PuSH Hub (onboard hub) Tuesday, August 24, 2010
  • 37. function pusher_menu() { $items = array(); $items['realtime.xml'] = array( 'title' => 'Realtime RSS feed', 'page callback' => 'pusher_feed_page', 'access arguments' => array('access content'), 'type' => MENU_CALLBACK, ); return $items; } function pusher_feed_page() { drupal_set_header( 'Content-Type: application/rss+xml; charset=utf-8'); print pusher_feed(); } Tuesday, August 24, 2010
  • 38. function pusher_nodeapi($node, $op) { if ($op == 'insert' || $op == 'update') { if ($node->status && $node->promote) { pusher_notify($node->nid); } } } function pusher_notify($nid) { node_load(NULL, NULL, TRUE); $changed = pusher_feed(array($nid)); push_hub_notify(url('realtime.xml', array('absolute' => TRUE)), $changed, TRUE); } Tuesday, August 24, 2010
  • 39. David Weinberger: “Small pieces loosely joined” Tuesday, August 24, 2010
  • 41. Mapping content between sites Tuesday, August 24, 2010
  • 42. Check out • PubSubHubbub spec • Feeds module (PuSHSubscriber.inc) • PuSH Hub module (PuSHHub.inc) Tuesday, August 24, 2010
  • 43. What’s next? • Solidify Subscriber support • Implement Publisher support • Solidify content mapping standards • Security: PuSH + OAuth • Content type independence Tuesday, August 24, 2010
  • 44. Thank you. Questions? Tuesday, August 24, 2010