Node Application

../../_images/architecture_node.png

A aplicação se comporta em uma arquitetura de conexão entre o dispositivo e uma aplicação Node JS. Basicamente, é necessário conhecer a API Socket IO para iniciar esta comunicação, tanto da parte web client, quanto a parte mobile. Esta arquitetura, funciona com emits, ou seja emissões de eventos.

Conexão

Ao tentar efetuar a conexão com o Node Application, é necessário o envio das informações de comunicação para sua identificação:

  • deviceUuid: Identificador do seu dispositivo, se for um webclient não precisa;
  • installCode: Código de instalação do aplicativo atual, ou seja, fluxo do Simova Apps;
  • platform: Plataforma que identifica quem você é, no caso android ou web.

Comandos

O Node application possui alguns comandos básicos, necessários para manter os dispositivos comunicando, mas caso novos comandos precisem ser adicionados na parte Mobile de comunicação, o Node Application não precisa conhecê-los, pois ele é apenas um emitter ou repassador de eventos. Os comandos que ele reconhece são:

  • disconnect: Remove seu dispositivo da lista de conexões;
  • error: Loga o erro utilizando o Log4js;
  • listMobiles: Lista os dispositivos conectados emitindo o evento ‘sendListMobiles’;
  • executeCommand: Repassa para os dispositivos um comando específico, ou, envia ao solicitante um evento de erro, caso o dispositivo não seja alcançável, ‘sendError’;
  • sendCommunication: Evento receptivo e retro emitido, quando um dispositivo emite este evento, os dados são lidos e é emitida uma resposta aos dispositivos

específicos, ou seja, ocorre a emissão do evento ‘sendResponse’.

Emitters

São eventos devolvidos a um dispositivo móvel ou aplicação web em que ele receberá os dados de comunicação e tratará da maneira que o convém.

  • sendClientSocketId: Envia ao dispositivo que conectou a aplicação seus dados de conexão, ou seja, seu id de conexão (socket id);
  • disconnect: Envia ao dispositivo conectado que ele foi desconectado da aplicação e não está mais operante na aplicação. É usado quando os dados de tentativa de conexão não seguem o padrão;
  • sendListMobiles: Retorna os dispositivos mobile conectados no momento no Node Application;
  • sendError: Retorna ao dispositivo conectado que houve algum erro de comunicação.
  • sendResponse: Envia ao dispositivo alguma resposta ou algum comando que ele deve ser executado, lembrando que é apenas um repassador, então os comunicantes que devem saber como interagir entre eles, não o Node Application.

Estrutura de desenvolvimento

A aplicação foi elaborada com o uso de Socket IO, o requisito básico é o Node JS instalado e a biblioteca Socket IO. Para efetuar o deploy no servidor, a ferramenta utilizada foi o pm2, cujo motivo foi facilitar a visualização do uso de memória, facilidade de restart/start da aplicação e assim por diante.

  • pm2 list: Retorna as informações das aplicações aos quais o pm2 subiu. As informações incluem o uptime, id e pid (Linux), status (online, offline etc.), uso de memória, watchers etc.;
  • pm2 monit: Mostra em realtime no terminal, allocation e memory use da aplicação. Para sair, basta control + c;
  • O caminho para a aplicação em homologação está na pasta /home/xMovaSockets, bem como o seu log. Até o momento, não está incluso na rotina de compactação de logs, mas como é mais para conexão e visualização destas etapas, caso queira apagar seu conteúdo: echo “” > socket-server.log;
  • A documentação do pm2 encontra-se disponível em: http://pm2.keymetrics.io/, a aplicação é de simples uso e roda tranquilamente sobre Sistemas Operacionais Like Unix.