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

Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfAijun Zhang
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-pyJamie (Taka) Wang
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdfPedro Manuel
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1DianaGray10
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024SkyPlanner
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemAsko Soukka
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024D Cloud Solutions
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.YounusS2
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxMatsuo Lab
 

Recently uploaded (20)

Machine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdfMachine Learning Model Validation (Aijun Zhang 2024).pdf
Machine Learning Model Validation (Aijun Zhang 2024).pdf
 
20230202 - Introduction to tis-py
20230202 - Introduction to tis-py20230202 - Introduction to tis-py
20230202 - Introduction to tis-py
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
Nanopower In Semiconductor Industry.pdf
Nanopower  In Semiconductor Industry.pdfNanopower  In Semiconductor Industry.pdf
Nanopower In Semiconductor Industry.pdf
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1Secure your environment with UiPath and CyberArk technologies - Session 1
Secure your environment with UiPath and CyberArk technologies - Session 1
 
Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024Salesforce Miami User Group Event - 1st Quarter 2024
Salesforce Miami User Group Event - 1st Quarter 2024
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
Bird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystemBird eye's view on Camunda open source ecosystem
Bird eye's view on Camunda open source ecosystem
 
201610817 - edge part1
201610817 - edge part1201610817 - edge part1
201610817 - edge part1
 
Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024Artificial Intelligence & SEO Trends for 2024
Artificial Intelligence & SEO Trends for 2024
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.Basic Building Blocks of Internet of Things.
Basic Building Blocks of Internet of Things.
 
Introduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptxIntroduction to Matsuo Laboratory (ENG).pptx
Introduction to Matsuo Laboratory (ENG).pptx
 

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