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.
2024: Domino Containers - The Next Step. News from the Domino Container commu...
Bringing Interactivity to Your Drupal Site with Node.js Integration
1. Bring real-time interactivity to Drupal with Node.js
Howard Tyson, senior developer, Zivtech
Kieran Lal, technical director, enterprise sales
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
http://acquia.com/resources/webinars
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
http://acquia.com/resources/webinars
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
Drupal.org
which
has
added
6000
more
developers
since
Jan,
2011
8. Howard Tyson
• Drupal.org, twitter, IRC: tizzo
• Senior Developer at Zivtech
• Drupal & systems architect, trainer
9. 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
11. Node.js
• Javascript on the server
• Based on Google’s V8 engine
• Event driven
• Asynchronous I/O performed by
libraries
12. Architecture
JavaScript C/C++
your code
node standard library
node bindings provided by modules
(socket, http, etc)
thread pool
13. 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
14. Node.js hello
world
• Writing a web server was never so
easy!
16. 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
17. 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
18. Apache’s
Shortcomings
• One thread (usually
one process) per
connection
• Memory heavy
processes (for
Drupal especially)
• Persistent and
concurrent
connections are
19. Node.js is good
for...
• Concurrency!
• Asynchronous I/O
• Low overhead for
open connections
• Light weight servers
• Networking
applications
20. 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
22. 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
23. The Node.js
module
• The node.js module on Drupal.org
• http://drupal.org/project/nodejs
• Focused on realtime updates for
Drupal
• Provides a node.js server and a
Drupal module that integrates
with it
24. 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
25. 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 Load
socket.io using auth
successful (with auth token)
token
26. Subsequent pages
2. Node.js
remembers the 1. Normal Drupal
authenticated Page Load
token, authenticating (with auth token)
the user without a
need to query
Drupal again
27. 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 Drupal
Web browser Node.js Server Apache Server
34. 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)
35. New Features
• Content channels (recently landed)
• Views integration
• Generic entity updating
• Your module here...
36. Call to action!
• We need:
• Contributors!
• Documentation writers!
• Testers!
• http://drupal.org/project/nodejs
• http://drupal.org/project/chatroom
38. Questions
• For
more
information
visit:
http://www.acquia.com
• Follow
us:
http://www.twitter.com/acquia
• Contact
us:
sales@acquia.com
or
888.9.ACQUIA
• Howard
Tyson
howard@howardtyson.com
• Kieran
Lal,
kieran@acquia.com,
415-‐992-‐8124
• follow:
amazonk
Today’s
webinar
recording
will
be
posted
to:
http://acquia.com/resources/recorded_webinars