Bringing Interactivity to Your Drupal Site with Node.js Integration


Published on

Drupal is a powerful, flexible platform for building applications, but not something that handles realtime notifications easily. Node.js is a breath of fresh air in the Open Source web server landscape. It makes writing applications that handle thousands of open connections at the same time easily.

The Nodejs module integrates Drupal with Node.js, allowing for the best of both worlds. Realtime chat, push notifications and help desk functionality can all be easily added to your Drupal site via the Nodejs module, without the usual scalability and performance issues associated with these technologies on the LAMP stack.

Published in: Technology
1 Comment
No Downloads
Total views
On SlideShare
From Embeds
Number of Embeds
Embeds 0
No embeds

No notes for slide

Bringing Interactivity to Your Drupal Site with Node.js Integration

  1. 1. Bring real-time interactivity to Drupal with Node.js Howard Tyson, senior developer, Zivtech Kieran Lal, technical director, enterprise sales
  2. 2. Upcoming  Webinars• Drupal  in  the  Trenches:  Solving  Real  World  Problems• Five  websites  you  can  launch  on  Dev  Cloud  without  Coding• Selecting  the  Right  Solution  to  Build  your  Online   Developer  Community• Easy  Drupal  Hosting  Lifecycle• From  PSD  to  Drupal  Theme• Four  Open  Source  Drupal  Applications  for  Higher  Ed
  3. 3. Upcoming  Node.js  Webinars• Lessons  learned  integrating  Drupal  with  Node.js  and   MongoDB  powered  Web  Services • Lior  Kesos,  Swifto,  founder  Linnovate • November  9th,  2011
  4. 4. Howard  Tyson• Howard  Tyson,  Senior  Developer  at  Zivtech  • Developing  Drupal  powered  websites  since  2006.    • Howard  contributes  to  Drupal  and  co-­‐maintains  the   Nodejs  module,  Version  Control  API  among  others.• Version  control  powers  Git  repository  on  which   has  added  6000  more  developers  since  Jan,  2011
  5. 5. Node.js & Drupal Drupal in realtime via Node.js
  6. 6. WhoWho am I?
  7. 7. Howard Tyson•, twitter, IRC: tizzo• Senior Developer at Zivtech• Drupal & systems architect, trainer
  8. 8. Zivtech• Drupal experts• Open source enthusiasts (node.js, Alfresco, Zend, Python, etc).• Excellent web/mobile design team• Offer public and private trainings focused on turning smart people into excellent developers
  9. 9. WhatWhat is Node.js everyone is talking about, anyway?
  10. 10. Node.js• Javascript on the server• Based on Google’s V8 engine• Event driven• Asynchronous I/O performed by libraries
  11. 11. Architecture JavaScript C/C++ your code node standard library node bindings provided by modules (socket, http, etc) thread pool
  12. 12. Architecture• A single process runs the main event loop and maintains all connections• Tasks are performed asynchronously by workers in a thread pool managed by a library leaving the main event loop free to handle other requests
  13. 13. Node.js hello world• Writing a web server was never so easy!
  14. 14. WhyWe already have Apache, why is this helpful?
  15. 15. Why we care about realtime?• Users expect more and more (they see it on Facebook, Twitter, Google, etc. every day)• Great for mobile• Bridge the native app gap
  16. 16. A Use Case• Dignio• A service for improving life for patience needing additional care but not assisted living• Realtime webapp for call center employees, patients
  17. 17. Apache’s Shortcomings• One thread (usually one process) per connection• Memory heavy processes (for Drupal especially)• Persistent and concurrent connections are
  18. 18. Node.js is good for...• Concurrency! • Asynchronous I/O • Low overhead for open connections• Light weight servers• Networking applications
  19. 19. Node.js is good for...• Backend workers or serving clients• Node.js has a vibrant community writing extensions (often you just need to write some glue, sound familiar?)• Wherever Drupal’s power comes at too high a price
  20. 20. HowHow do we use node.js with Drupal?
  21. 21. Integarting with node.js• Write your own node.js server • if you know javascript, it’s not so hard!• Use drupal’s node.js module for realtime communications
  22. 22. The Node.js module• The node.js module on•• Focused on realtime updates for Drupal • Provides a node.js server and a Drupal module that integrates with it
  23. 23. Realtime?• Until now, when a client opens a page they don’t see updates until the next time they refresh the page• Our module can push content to someone while they view the page
  24. 24. Authentication 4.3. Node.js sends a Drupal returns listauth token to of channels for the user Drupal 2. Connection 5. Node.js notifies 1. Normal Drupal requested by client that auth is Page using auth successful (with auth token) token
  25. 25. Subsequent pages 2. Node.js remembers the 1. Normal Drupal authenticated Page Loadtoken, authenticating (with auth token) the user without a need to query Drupal again
  26. 26. Client requests Drupal page Drupal sends down HTML with JS token Client sends auth token to Node.js Node.js verifies token with Drupal Apache Client Drupal sends appropriate / Nginx Node.js notifies channels for the the client of user successful auth Node.js Subsequent connections do not hit DrupalWeb browser Node.js Server Apache Server
  27. 27. WhereWhere can my code hook in to leverage Node.js?
  28. 28. PHP
  29. 29. JavaScript
  30. 30. Add a user to a channel
  31. 31. Message only the channel
  32. 32. WhenAre we getting new features?
  33. 33. What’s coming• Version 1.0 is right around the corner• we’re on beta5• Chatroom is undergoing a refactor to rely on a push capable backend (like node.js)
  34. 34. New Features• Content channels (recently landed) • Views integration • Generic entity updating • Your module here...
  35. 35. Call to action!• We need: • Contributors! • Documentation writers! • Testers!••
  36. 36. DemoLet’s see it in action!
  37. 37. Questions• For  more  information  visit:• Follow  us:• Contact  us:  or  888.9.ACQUIA• Howard  Tyson• Kieran  Lal,,    415-­‐992-­‐8124• follow:  amazonk Today’s  webinar  recording  will  be  posted  to: