SlideShare ist ein Scribd-Unternehmen logo
1 von 33
Downloaden Sie, um offline zu lesen
About myself
Ivo Nellis
CTO, Fenomen Veebiagentuur

● Working with Drupal since 2007
● Contributed mostly to Estonian translations
● Main focus: Drupal, Node.js, MongoDB

                                   Skype: ivonellis
                                  Twitter: ivonellis
                                 ivo@fenomen.ee
Developing realtime apps
 with Node.js and Drupal
           Ivo Nellis
     Fenomen veebiagentuur
With Node.js, you can
  write web applications
Perfect for fast, scalable, light-weight data-
 intensive and real-time web applications
Node.js project is new
       Relatively...
1990                 2000                                  2010


                                                             Node.js


                                             Ruby on Rails



                                        ASP.NET

                          Java


                    PHP


       Python



Perl




                   Created 2009 by Ryan Dahl
With node, you can write
      in JavaScript
  or in something that compiles to JS
           (CoffeeScript, ...)
Server-side JavaScript is great!
● JavaScript is the core of modern Web
   ○ A lot of existing JS developers
   ○ Familiarity with asynchronous programming model
● Share code between client and server
   ○ Can use existing libraries on server side as well.
● It's fast ... and it's getting faster every day
   ○ Huge competition between browser vendors
But SSJS has been done before..

 Jaxer Rhino Ringo
Ejscript Spludo LiveWire
Node.js is built on
 Google V8 JS engine
Fast, Single runtime = less compability
                issues
Node.js is asynchronous
    & event driven
   and it's great for real-time apps
Apache request lifecycle


 Incoming requests




                     Child processes / threads
The cost of I/O
L1-cache                                                      3 cycles
L2-cache                                                   14 cycles
RAM                                                      250 cycles
Disk                                     41 000 000 cycles
Network                               240 000 000 cycles
           http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/

           http://duartes.org/gustavo/blog/post/what-your-computer-does-while-you-wait
Node.js event loop


 Incoming requests




                     I/O callback



                           I/O request




                           Single process
Hello World!
var http = require('http');

http.createServer(function (req, res) {
  res.writeHead(200, {'Content-Type': text/plain'});
  res.end('Hello Worldn');
}).listen(8000);

                        ●   Node itself does not provide much
                        ●   No "standard" webserver features:
                        ●   No authentication
                        ●   No session handling
                        ●   No cookies
                        ●   No email
                        ●   No templating system
                        ●   No MVC or framework layer
You need to extend
●   Active community
●   Node package manager (npm) is great
●   10913 packages as of 06/2012
●   Simple one-line installation
●   Manages all the dependencies for you

$ npm install express
var express = require("express");
express                            mongodb-native

connect           socket.io                              redis

 request             nodemailer
                                                         jquery
   underscore                  calipso
           async
           https://github.com/joyent/node/wiki/Modules
                       search.npmjs.org
                           github.com
Node.js vs Drupal
  CMS                  Modules, themes, ...      Libraries ...


                                                Calipso / etc...


  Framework                  Drupal           Express.js
                                                                 LIB
                                              Connect.js


  Scripting language          PHP
                                                   Node.js
  Web Server
                             Apache
Web sockets
  and socket.io
Realtime communication
 over HTTP is difficult
 HTTP is request - response by nature
 No good solutions (ajax, long polling)
Solution: Web sockets
●   Websocket API is a part of HTML5 spec
●   New protocol: ws:// & wss://
●   Persistant connection
●   Both parties can send data at any time
●   Native support in Chrome, Firefox, IE10
●   With node.js and socket.io you can use Web
    Sockets today

                http://socket.io/
Socket.io client & server
<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost');
  socket.on('news', function (data) {
    console.log(data);
  });
</script>
------------------------------------------------
-
var io = require('socket.io').listen(80);

io.sockets.on('connection', function (socket) {
  socket.emit('news', { hello: 'world' });
});
Combining Drupal, Node.
  js and Web sockets
       When and how?
When should I consider it?
● Doing it all on Apache & Drupal becomes too
  expensive and unscalable
  ○   Chat, messaging
  ○   Liveblog
  ○   Streaming data (logs, etc...)
  ○   API layer for a mobile app
  ○   Realtime widgets (sports, stocks)
  ○   Games
  ○   etc...
How?
● A: Write your own Node server
  ○ Write your own module code for Drupal
  ○ Write your own client code


● B: Build on the existing Drupal nodejs
  module
  ○ provides node.js server with socket.io support
  ○ provides a drupal module that integrates with it
  ○ focuses mainly on realtime updates

            http://drupal.org/project/nodejs
nodejs module for Drupal
Enables realtime communication
  Provides a module



    Drupal                                           Client
                                                     Clients



                      Node.js & socket.io
                          Provides a server script
Broadcast messages
Update Watchdog page realtime
Your custom module
 $message = (object) array(
    'broadcast' => TRUE,
    'data' => (object) array(
       'subject' => 'Hi!',
       'body' => 'An important message!',
    ),
    'channel' => 'my_channel',
 );
 nodejs_enqueue_message($message);
And the client side implementation
Drupal.nodejs.callbacks.example = {
  callback: function(message) {
    if (message.channel == "my_channel") {
      alert(message.data);
    }
  }
}
Thank you!
Developing realtime apps with Drupal and NodeJS

Weitere ähnliche Inhalte

Was ist angesagt?

Case study of an accredited hospital final
Case study of an accredited hospital finalCase study of an accredited hospital final
Case study of an accredited hospital final
Raju Nsd
 
DOCUMENTATION OF NURSING PROCESS
DOCUMENTATION OF NURSING PROCESSDOCUMENTATION OF NURSING PROCESS
DOCUMENTATION OF NURSING PROCESS
Harsh Rastogi
 
nursing process Evaluation
nursing process Evaluationnursing process Evaluation
nursing process Evaluation
Shaells Joshi
 

Was ist angesagt? (20)

DOCUMENTATION IN NURSING
DOCUMENTATION IN NURSINGDOCUMENTATION IN NURSING
DOCUMENTATION IN NURSING
 
Improving Laboratory Flow with Simulation
Improving Laboratory Flow with SimulationImproving Laboratory Flow with Simulation
Improving Laboratory Flow with Simulation
 
Nursing documentation ppt
Nursing documentation pptNursing documentation ppt
Nursing documentation ppt
 
The human nervous system and sense organ
The human nervous system and sense organThe human nervous system and sense organ
The human nervous system and sense organ
 
Emergency Department Admin Issues
Emergency Department Admin IssuesEmergency Department Admin Issues
Emergency Department Admin Issues
 
Peritoneum and peritoneal cavity
Peritoneum and peritoneal cavityPeritoneum and peritoneal cavity
Peritoneum and peritoneal cavity
 
Application of computers in nursing
Application of computers in nursingApplication of computers in nursing
Application of computers in nursing
 
Nursing Documentation
Nursing DocumentationNursing Documentation
Nursing Documentation
 
Code Red Training.pptx
Code Red Training.pptxCode Red Training.pptx
Code Red Training.pptx
 
Case study of an accredited hospital final
Case study of an accredited hospital finalCase study of an accredited hospital final
Case study of an accredited hospital final
 
Different breathing techniques for resuscitation for neonates
Different breathing techniques for resuscitation for neonatesDifferent breathing techniques for resuscitation for neonates
Different breathing techniques for resuscitation for neonates
 
DOCUMENTATION OF NURSING PROCESS
DOCUMENTATION OF NURSING PROCESSDOCUMENTATION OF NURSING PROCESS
DOCUMENTATION OF NURSING PROCESS
 
OT & ICU LAYOUTS.pptx
OT & ICU LAYOUTS.pptxOT & ICU LAYOUTS.pptx
OT & ICU LAYOUTS.pptx
 
Handover
Handover Handover
Handover
 
nursing process Evaluation
nursing process Evaluationnursing process Evaluation
nursing process Evaluation
 
Ot scheduling module
Ot scheduling moduleOt scheduling module
Ot scheduling module
 
PATIENT ADMISSION.docx
PATIENT ADMISSION.docxPATIENT ADMISSION.docx
PATIENT ADMISSION.docx
 
Transportation in Hospitals- Dr. Ruchi Kushwaha.pptx
Transportation in Hospitals- Dr. Ruchi Kushwaha.pptxTransportation in Hospitals- Dr. Ruchi Kushwaha.pptx
Transportation in Hospitals- Dr. Ruchi Kushwaha.pptx
 
Nursing Diary Writing:Health Behaviour Change Diary Entry
Nursing Diary Writing:Health Behaviour Change Diary EntryNursing Diary Writing:Health Behaviour Change Diary Entry
Nursing Diary Writing:Health Behaviour Change Diary Entry
 
StartingPoint Submission Authoring Suite
StartingPoint Submission Authoring SuiteStartingPoint Submission Authoring Suite
StartingPoint Submission Authoring Suite
 

Ähnlich wie Developing realtime apps with Drupal and NodeJS

Why Node.js
Why Node.jsWhy Node.js
Why Node.js
guileen
 

Ähnlich wie Developing realtime apps with Drupal and NodeJS (20)

Node js
Node jsNode js
Node js
 
GeekCampSG - Nodejs , Websockets and Realtime Web
GeekCampSG - Nodejs , Websockets and Realtime WebGeekCampSG - Nodejs , Websockets and Realtime Web
GeekCampSG - Nodejs , Websockets and Realtime Web
 
Why Nodejs Guilin Shanghai
Why Nodejs Guilin ShanghaiWhy Nodejs Guilin Shanghai
Why Nodejs Guilin Shanghai
 
Why Node.js
Why Node.jsWhy Node.js
Why Node.js
 
Practical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.jsPractical Use of MongoDB for Node.js
Practical Use of MongoDB for Node.js
 
Nodejs
NodejsNodejs
Nodejs
 
Nodejs
NodejsNodejs
Nodejs
 
Introduction to node.js by jiban
Introduction to node.js by jibanIntroduction to node.js by jiban
Introduction to node.js by jiban
 
Beginners Node.js
Beginners Node.jsBeginners Node.js
Beginners Node.js
 
End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013End-to-end HTML5 APIs - The Geek Gathering 2013
End-to-end HTML5 APIs - The Geek Gathering 2013
 
Nodejs overview
Nodejs overviewNodejs overview
Nodejs overview
 
20120306 dublin js
20120306 dublin js20120306 dublin js
20120306 dublin js
 
Kalp Corporate Node JS Perfect Guide
Kalp Corporate Node JS Perfect GuideKalp Corporate Node JS Perfect Guide
Kalp Corporate Node JS Perfect Guide
 
Introduction to Node.js
Introduction to Node.jsIntroduction to Node.js
Introduction to Node.js
 
Node azure
Node azureNode azure
Node azure
 
JavaScript on the server - Node.js
JavaScript on the server - Node.jsJavaScript on the server - Node.js
JavaScript on the server - Node.js
 
Node.js: A Guided Tour
Node.js: A Guided TourNode.js: A Guided Tour
Node.js: A Guided Tour
 
node.js: Javascript's in your backend
node.js: Javascript's in your backendnode.js: Javascript's in your backend
node.js: Javascript's in your backend
 
Node.js on Azure
Node.js on AzureNode.js on Azure
Node.js on Azure
 
introduction to node.js
introduction to node.jsintroduction to node.js
introduction to node.js
 

Mehr von drupalcampest

Mehr von drupalcampest (11)

Advanced theming
Advanced themingAdvanced theming
Advanced theming
 
Welcome to Drupalcamp Estonia 2012
Welcome to Drupalcamp Estonia 2012Welcome to Drupalcamp Estonia 2012
Welcome to Drupalcamp Estonia 2012
 
Implementing Drupalcamp sites
Implementing Drupalcamp sitesImplementing Drupalcamp sites
Implementing Drupalcamp sites
 
Designing Drupalcamp sites
Designing Drupalcamp sitesDesigning Drupalcamp sites
Designing Drupalcamp sites
 
Drupal vs. the Others
Drupal vs. the OthersDrupal vs. the Others
Drupal vs. the Others
 
Migrating University of Tartu websites to Drupal
Migrating University of Tartu websites to DrupalMigrating University of Tartu websites to Drupal
Migrating University of Tartu websites to Drupal
 
Drupalcamp Tallinn - Drupal 8
Drupalcamp Tallinn - Drupal 8Drupalcamp Tallinn - Drupal 8
Drupalcamp Tallinn - Drupal 8
 
Drupalcamp Estonia - High Performance Sites
Drupalcamp Estonia - High Performance SitesDrupalcamp Estonia - High Performance Sites
Drupalcamp Estonia - High Performance Sites
 
Drupalcamp Estonia - Drupal 7
Drupalcamp Estonia - Drupal 7Drupalcamp Estonia - Drupal 7
Drupalcamp Estonia - Drupal 7
 
Drupalcamp Estonia - Introduction to Drupal
Drupalcamp Estonia - Introduction to DrupalDrupalcamp Estonia - Introduction to Drupal
Drupalcamp Estonia - Introduction to Drupal
 
Drupalcamp Estonia 2011 - Welcome
Drupalcamp Estonia 2011 - WelcomeDrupalcamp Estonia 2011 - Welcome
Drupalcamp Estonia 2011 - Welcome
 

Kürzlich hochgeladen

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Kürzlich hochgeladen (20)

Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
CNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In PakistanCNIC Information System with Pakdata Cf In Pakistan
CNIC Information System with Pakdata Cf In Pakistan
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
Apidays New York 2024 - APIs in 2030: The Risk of Technological Sleepwalk by ...
 
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
Apidays New York 2024 - Passkeys: Developing APIs to enable passwordless auth...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
Cyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdfCyberprint. Dark Pink Apt Group [EN].pdf
Cyberprint. Dark Pink Apt Group [EN].pdf
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 

Developing realtime apps with Drupal and NodeJS

  • 1.
  • 2. About myself Ivo Nellis CTO, Fenomen Veebiagentuur ● Working with Drupal since 2007 ● Contributed mostly to Estonian translations ● Main focus: Drupal, Node.js, MongoDB Skype: ivonellis Twitter: ivonellis ivo@fenomen.ee
  • 3. Developing realtime apps with Node.js and Drupal Ivo Nellis Fenomen veebiagentuur
  • 4. With Node.js, you can write web applications Perfect for fast, scalable, light-weight data- intensive and real-time web applications
  • 5. Node.js project is new Relatively...
  • 6. 1990 2000 2010 Node.js Ruby on Rails ASP.NET Java PHP Python Perl Created 2009 by Ryan Dahl
  • 7. With node, you can write in JavaScript or in something that compiles to JS (CoffeeScript, ...)
  • 8. Server-side JavaScript is great! ● JavaScript is the core of modern Web ○ A lot of existing JS developers ○ Familiarity with asynchronous programming model ● Share code between client and server ○ Can use existing libraries on server side as well. ● It's fast ... and it's getting faster every day ○ Huge competition between browser vendors
  • 9. But SSJS has been done before.. Jaxer Rhino Ringo Ejscript Spludo LiveWire
  • 10. Node.js is built on Google V8 JS engine Fast, Single runtime = less compability issues
  • 11. Node.js is asynchronous & event driven and it's great for real-time apps
  • 12. Apache request lifecycle Incoming requests Child processes / threads
  • 13. The cost of I/O L1-cache 3 cycles L2-cache 14 cycles RAM 250 cycles Disk 41 000 000 cycles Network 240 000 000 cycles http://blog.mixu.net/2011/02/01/understanding-the-node-js-event-loop/ http://duartes.org/gustavo/blog/post/what-your-computer-does-while-you-wait
  • 14. Node.js event loop Incoming requests I/O callback I/O request Single process
  • 15. Hello World! var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': text/plain'}); res.end('Hello Worldn'); }).listen(8000); ● Node itself does not provide much ● No "standard" webserver features: ● No authentication ● No session handling ● No cookies ● No email ● No templating system ● No MVC or framework layer
  • 16. You need to extend ● Active community ● Node package manager (npm) is great ● 10913 packages as of 06/2012 ● Simple one-line installation ● Manages all the dependencies for you $ npm install express var express = require("express");
  • 17. express mongodb-native connect socket.io redis request nodemailer jquery underscore calipso async https://github.com/joyent/node/wiki/Modules search.npmjs.org github.com
  • 18. Node.js vs Drupal CMS Modules, themes, ... Libraries ... Calipso / etc... Framework Drupal Express.js LIB Connect.js Scripting language PHP Node.js Web Server Apache
  • 19. Web sockets and socket.io
  • 20. Realtime communication over HTTP is difficult HTTP is request - response by nature No good solutions (ajax, long polling)
  • 21. Solution: Web sockets ● Websocket API is a part of HTML5 spec ● New protocol: ws:// & wss:// ● Persistant connection ● Both parties can send data at any time ● Native support in Chrome, Firefox, IE10 ● With node.js and socket.io you can use Web Sockets today http://socket.io/
  • 22. Socket.io client & server <script src="/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://localhost'); socket.on('news', function (data) { console.log(data); }); </script> ------------------------------------------------ - var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); });
  • 23. Combining Drupal, Node. js and Web sockets When and how?
  • 24. When should I consider it? ● Doing it all on Apache & Drupal becomes too expensive and unscalable ○ Chat, messaging ○ Liveblog ○ Streaming data (logs, etc...) ○ API layer for a mobile app ○ Realtime widgets (sports, stocks) ○ Games ○ etc...
  • 25. How? ● A: Write your own Node server ○ Write your own module code for Drupal ○ Write your own client code ● B: Build on the existing Drupal nodejs module ○ provides node.js server with socket.io support ○ provides a drupal module that integrates with it ○ focuses mainly on realtime updates http://drupal.org/project/nodejs
  • 27. Enables realtime communication Provides a module Drupal Client Clients Node.js & socket.io Provides a server script
  • 30. Your custom module $message = (object) array( 'broadcast' => TRUE, 'data' => (object) array( 'subject' => 'Hi!', 'body' => 'An important message!', ), 'channel' => 'my_channel', ); nodejs_enqueue_message($message);
  • 31. And the client side implementation Drupal.nodejs.callbacks.example = { callback: function(message) { if (message.channel == "my_channel") { alert(message.data); } } }