bringing interactivity to your drupal site with node.js integration

Post on 11-May-2015

7.438 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

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.

TRANSCRIPT

Bring real-time interactivity to Drupal with Node.js

Howard Tyson, senior developer, ZivtechKieran Lal, technical director, enterprise sales

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

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

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

Node.js & DrupalDrupal in realtime via Node.js

WhoWho am I?

Howard Tyson

•Drupal.org, twitter, IRC: tizzo

•Senior Developer at Zivtech

•Drupal & systems architect, trainer

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

WhatWhat is Node.js everyone is talking about,

anyway?

Node.js

•Javascript on the server

•Based on Google’s V8 engine

•Event driven

•Asynchronous I/O performed by libraries

Architecture

node standard library

JavaScript C/C++

node bindings provided by modules(socket, http, etc)

thread pool

your code

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

Node.js hello world

•Writing a web server was never so easy!

WhyWe already have Apache, why is this helpful?

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

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

Apache’s Shortcomings

• One thread (usually one process) per connection

• Memory heavy processes (for Drupal especially)

• Persistent and concurrent connections are

Node.js is good for...

• Concurrency!

• Asynchronous I/O

• Low overhead for open connections

• Light weight servers

• Networking applications

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

HowHow do we use node.js with Drupal?

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

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

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

1. Normal Drupal Page Load

(with auth token)

3. Node.js sends auth token to

Drupal

2. Connection requested by

socket.io using auth token

4. Drupal returns a list of channels for

the user

5. Node.js notifies client that auth is

successful

Authentication

1. Normal Drupal Page Load

(with auth token)

2. Node.js remembers the authenticated

token, authenticating the user without a

need to query Drupal again

Subsequent pages

Client Apache / Nginx

Node.js

Client requests Drupal page

Drupal sends down HTML with JS token

Client sends auth token to Node.js

Node.js verifies token with Drupal

Drupal sends appropriate

channels for the user

Subsequent connections do not hit Drupal

Node.js notifies the client of

successful auth

Node.js ServerWeb browser Apache Server

WhereWhere can my code hook in to leverage

Node.js?

PHP

JavaScript

Add a user to a channel

Message only the channel

WhenAre we getting new features?

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)

New Features

•Content channels (recently landed)

•Views integration

•Generic entity updating

•Your module here...

Call to action!

•We need:

•Contributors!

•Documentation writers!

•Testers!

•http://drupal.org/project/nodejs

•http://drupal.org/project/chatroom

DemoLet’s see it in action!

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

top related