index.js 1.37 KB
module.exports = function() {

const webSocketServer = require('ws').Server;
var clients = [];

const objWs = {};

objWs.wsServer = new webSocketServer({
  port: config.port
});

objWs.wsServer.on('connection', function connection(ws) {

  console.log('open socket server');

  ws.on('message', function incoming(message) {

    message = JSON.parse(message.toString('utf8'));

    switch (message.action) {
      case 'gln':
        clients.push({ws: ws, gln: message.gln});
        break;
      default:
        // console.log(message.action);
    }
  });
});

objWs.getEntidad = function(gln, tableName, where, queryString) {

  return new Promise(function(resolve, reject) {

    var client = clients.filter(function(client) {
      return client.gln == gln
    })[0];

    if (!client) {
      reject('No se encuentra el webSocket client');
    }

    var idSolicitud = Math.round(Math.random() * 1000);

    var enviar = {
      action: 'getEntity',
      idSolicitud: idSolicitud
    };

    if (queryString) {

      enviar.queryString = queryString;
    } else {
      enviar.tableName = tableName;
      enviar.where = where || {};
    }

    client.ws.send(JSON.stringify(enviar));

    client.ws.on('message', function(message) {

      message = JSON.parse(message);

      if (idSolicitud == message.idSolicitud) {

        resolve(message.data);
      }

    });
  });
}

return objWs;
}