Skip to main content

Drupal 7 integration with nodejs for realtime notificaiton

At the end of this blog you will be able to broadcast a real time notification to all loggedin user. As shown below



I assume you know
1. how to setup drupal on your local machine
2. how to use drush
3. npm installed, if not refer installing npm

Step 1.
Go to root of your drupal project and run following commands
drush dl nodejs  
drush en -y nodejs nodejs_config nodejs_notify nodejs_actions nodejs_subscribe
Here we are installing necessary modules.

Step 2.

Nodejs server required . To download run following commands
 git clone https://github.com/beejeebus/drupal-nodejs.git 
 cd  /var/www/drupal-nodejs
   npm install
  cp    nodejs.config.js.example nodejs.config.js

open the "nodejs.config.js" file in editor.

Step 3.

Open following url in browser.
 YOUR_VIRTUAL_HOST/admin/config/nodejs/js  
This will open configuration builder  UI. It will look like

Exact configruation which worked for me
 

 * This configuration file was built using the 'Node.js server configuration builder'.  
 * For a more fully commented example see the file nodejs.config.js.example in the root of this module  
 */  
 backendSettings = {  
  "scheme":"http",  
  "host":"localhost",  
  "port":9001,  
  "key":"/path/to/key/file",  
  "cert":"/path/to/cert/file",  
  "resource":"/socket.io",  
  "publishUrl":"publish",  
  "serviceKey":"murli800",  
  "backend":{  
  "port":80,  
  "host":"quora.api",  
  "messagePath":"/nodejs/message"},  
  "clientsCanWriteToChannels":false,  
  "clientsCanWriteToClients":false,  
  "extensions":"",  
  "debug":true,  
  "transports":["websocket",  
  "polling"],  
  "jsMinification":true,  
  "jsEtag":true,  
  "logLevel":1};
Copy the configuration and replace all content  in "nodejs.config.js" , which you opened in Step 2.

Step 4.

Run following commands

 cd /var/www/drupal-nodejs  
 node app.js  
This will start the server in foreground.

Now open following url to send broadcast message to all user.
 YOUR_VIRTUAL_HOST/admin/config/nodejs/nodejs_notify/broadcast  
This will open UI like

Now login with any user in other browser so that you can see notification .Submit the above form from the browser in which admin is logged in. If the setup is fine , then you will see a pop like


I hope this would help :)

Comments

  1. This is such a nice post which you shared here. it really helps me out. Keep sharing posts like these.

    Hire Drupal Developers |

    Drupal Development Company

    ReplyDelete

Post a Comment

Popular posts from this blog

Register user with profile fields using services module

This json format worked for me creating user with profile2 term reference fields in which multiple selection can be done. Below  profile_student_profile is term reference field with multiple selection. { "name":"oiu", "mail":"oiu@aol.com", "field_mobile_number":{ "und":{ "0":{ "value":"987393" } } }, "pass":"adsa", "field_requirement":{ "und":{ "0":{ "value":"vzxvczx" } } }, "field_gender":{ "und":"female" }, "field_class":{ "und":[ "12" ] }, "field_area":{ "und":[ "31" ] }, "status":1, "field_preferred_fee"

Check validity of one time login url by Drupal 7 Services module?

Create mytut_service.info and put following code in file. I am assuming you know how to create module. name = Mytut service description = My custom Service. package = Other core = 7.x dependencies[] = services dependencies[] = rest_server Put following code in mytut_service.module file. function mytut_service_services_resources() { $api = array( 'mytut_service_service' => array( 'operations' => array( 'retrieve' => array( 'help' => 'Retrieves story by nid', 'callback' => 'mycallback', 'access callback' => 'user_access', 'access arguments' => array('access content'), 'access arguments append' => FALSE, 'args' => array( array( 'name' => 'fn', 'type&