Guest User

Server

a guest
Apr 24th, 2018
33
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
JSON 4.68 KB | None | 0 0
  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.         io.sockets.connected[id].emit('message', tempdata);
  77.  
  78.     });
  79.  
  80. });
  81. ///////////////////////////////////////         App Chat    //////////////////////////////////////////////////////////
  82.  
  83. io.on('connect', function (socket) {
  84.  
  85. /////////////////////////////////////////////////////
  86. //////////////////          Add User Event      /////////////////////////////////
  87.     socket.on('add-user', function(data)
  88.         {
  89.  
  90.             if(!data.user_id)
  91.                 console.log('User Id is Required');
  92.             else if(!data.api_token)
  93.                 console.log('User Api Token is Required');
  94.             else
  95.                 {
  96. //                              console.log(data);
  97.  
  98.                     var user = con.query("SELECT * FROM user_devices WHERE user_id= '"+data.user_id+"' AND api_token='"+data.api_token+"' ", function(error, results, fields){
  99.  
  100.                     if(error)
  101.                         {
  102.                             console.log(error.message);
  103.                         }
  104.                     else if(results == undefined || results.length == 0)
  105.                         {
  106.                             console.log("No Device Token Found");
  107.                         }
  108.                     else
  109.                         {//////////////     Update user     //////////////////////
  110.  
  111.                             var update_device = con.query("UPDATE user_devices SET socket_id='"+data.socket_id+"' WHERE id="+results[0].id+" ", function(ierror, iresults, ifields){
  112.  
  113.                                     if(ierror)
  114.                                         {
  115.                                             console.log(ierror.message);
  116.                                         }                                      
  117.                                     else
  118.                                         {
  119.                                             console.log("Socket ID Connected Successfully");
  120.                                         }
  121.  
  122. //                              console.log(results, iresults, ifields);
  123.  
  124.                             });
  125.  
  126.                         }//////////////     Update user     //////////////////////
  127.  
  128.  
  129.                     });
  130.  
  131.                 }
  132.  
  133.         });
  134. //////////////////          Add User Event      /////////////////////////////////
  135. /////////////////////////////////////////////////////
  136.  
  137.   //Removing the socket on disconnect
  138.     socket.on('disconnect', function()
  139.         {
  140.  
  141.             var update_device = con.query("UPDATE user_devices SET socket_id='' WHERE socket_id='"+socket.id+"' ", function(ierror, iresults, ifields)
  142.                     {
  143.                         if(ierror)
  144.                             {
  145.                                 console.log(ierror.message);
  146.                             }                                      
  147.                         else
  148.                             {
  149.                                 console.log("Socket Disconnected Successfully");
  150.                             }
  151. //                              console.log(results, iresults, ifields);
  152.  
  153.                     });
  154.  
  155.         });
  156.  
  157. });
Add Comment
Please, Sign In to add comment