Guest User

New Server

a guest
Apr 24th, 2018
34
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. require('dotenv').config();
  2.  
  3. var app = require('express')();
  4. var server = require('http').Server(app);
  5. var io = require('socket.io')(server);
  6. var mysql = require('mysql');
  7. var Redis = require('ioredis');
  8. var redisClient = Redis.createClient();
  9.  
  10. ///////////////////////////         Mysql Connection        ////////////////////////////////
  11. var db_config = {
  12.     host: process.env.DB_HOST,
  13.     user: process.env.DB_USERNAME,
  14.     password: process.env.DB_PASSWORD,
  15.     database: process.env.DB_DATABASE
  16.         };
  17.  
  18. var con;
  19.  
  20. function handleDisconnect() {
  21.  
  22.   con = mysql.createConnection(db_config); // Recreate the connection, since
  23.                                                   // the old one cannot be reused.
  24.  
  25.   con.connect(function(err) {              // The server is either down
  26.         if(err)
  27.             {                                     // or restarting (takes a while sometimes).
  28.                 console.log('error when connecting to db:', err.message);
  29.                 setTimeout(handleDisconnect, 2000); // We introduce a delay before attempting to reconnect,
  30.             }
  31.         else
  32.             {
  33.                 console.log("DB Connected!");
  34.             }                                     // to avoid a hot loop, and to allow our node script to
  35.   });                                     // process asynchronous requests in the meantime.
  36.                                      
  37.   con.on('error', function(err) {      
  38.         console.log('db error', err);
  39.         if(err.code === 'PROTOCOL_CONNECTION_LOST')
  40.             { // Connection to the MySQL server is usually
  41.                 handleDisconnect();                         // lost due to either server restart, or a
  42.             }
  43.         else
  44.             {                                      // connnection idle timeout (the wait_timeout
  45.                 console.log("Mysql Error - ",err.message);
  46.                 throw err;                                  // server variable configures this)
  47.             }
  48.   });
  49.  
  50. }
  51.  
  52. handleDisconnect();
  53.  
  54. ///////////////////////////         Mysql Connection        ////////////////////////////////
  55.  
  56. var port_number = process.env.SOCKET_IO_PORT || 8080;
  57.  
  58. server.listen(port_number, function(){
  59.     console.log("Listening on localhost:"+port_number)
  60. });
  61.  
  62. ///////////////////////////////////////         App Chat    //////////////////////////////////////////////////////////
  63.  
  64.  var redisClient = Redis.createClient();
  65.  redisClient.subscribe('message');
  66.  
  67. redisClient.on("message", function(channel, data) {
  68.  
  69.     var tempdata = JSON.parse(data);
  70.     var ids = JSON.parse(tempdata.socket_ids)
  71.  
  72.     console.log("New Message in queue "+ typeof ids, ', ', ids);
  73.  
  74.     ids.forEach(function(id){
  75.  
  76.         try{
  77.                 io.sockets.connected[id].emit('message', tempdata);
  78.             }
  79.         catch(e)
  80.             {
  81.                 console.log('Socket Emit Error - '+e);
  82.             }
  83.  
  84.     });
  85.  
  86. });
  87. ///////////////////////////////////////         App Chat    //////////////////////////////////////////////////////////
  88.  
  89. io.on('connect', function (socket) {
  90.  
  91. /////////////////////////////////////////////////////
  92. //////////////////          Add User Event      /////////////////////////////////
  93.     socket.on('add-user', function(data)
  94.         {
  95.  
  96.             if(!data.user_id)
  97.                 console.log('User Id is Required');
  98.             else if(!data.api_token)
  99.                 console.log('User Api Token is Required');
  100.             else
  101.                 {
  102. //                              console.log(data);
  103.  
  104.                     var user = con.query("SELECT * FROM user_devices WHERE user_id= '"+data.user_id+"' AND api_token='"+data.api_token+"' ", function(error, results, fields){
  105.  
  106.                     if(error)
  107.                         {
  108.                             console.log(error.message);
  109.                         }
  110.                     else if(results == undefined || results.length == 0)
  111.                         {
  112.                             console.log("No Device Token Found");
  113.                         }
  114.                     else
  115.                         {//////////////     Update user     //////////////////////
  116.  
  117.                             var update_device = con.query("UPDATE user_devices SET socket_id='"+data.socket_id+"' WHERE id="+results[0].id+" ", function(ierror, iresults, ifields){
  118.  
  119.                                     if(ierror)
  120.                                         {
  121.                                             console.log(ierror.message);
  122.                                         }                                      
  123.                                     else
  124.                                         {
  125.                                             console.log("Socket ID Connected Successfully");
  126.                                         }
  127.  
  128. //                              console.log(results, iresults, ifields);
  129.  
  130.                             });
  131.  
  132.                         }//////////////     Update user     //////////////////////
  133.  
  134.  
  135.                     });
  136.  
  137.                 }
  138.  
  139.         });
  140. //////////////////          Add User Event      /////////////////////////////////
  141. /////////////////////////////////////////////////////
  142.  
  143.   //Removing the socket on disconnect
  144.     socket.on('disconnect', function()
  145.         {
  146.  
  147.             var update_device = con.query("UPDATE user_devices SET socket_id='' WHERE socket_id='"+socket.id+"' ", function(ierror, iresults, ifields)
  148.                     {
  149.                         if(ierror)
  150.                             {
  151.                                 console.log(ierror.message);
  152.                             }                                      
  153.                         else
  154.                             {
  155.                                 console.log("Socket Disconnected Successfully");
  156.                             }
  157. //                              console.log(results, iresults, ifields);
  158.  
  159.                     });
  160.  
  161.         });
  162.  
  163. });
Add Comment
Please, Sign In to add comment