Eventos em NodeJS

Os eventos em NodeJS, como se implementam e que características tem os eventos Javascript do lado do servidor.

Por Miguel Angel Alvarez - Tradução de Celeste Veiga


Publicado em: 06/9/13
Valorize este artigo:
No Manual de NodeJS já apresentamos informações bastante amplas para começar a dar os primeiros passos com esta plataforma de desenvolvimento. Ainda nos faltam muitas coisas importantes e básicas por saber sobre os eventos.

Neste artigo explicaremos o que são os eventos do lado do servidor e como são implementados em Node.JS. Caso vocês se interessem, é importante comentar que este texto foi extraído do segundo programa #nodeIO emitido em direto em DesarrolloWeb.com por Alejandro Morales e Miguel Angel Alvarez: #nodeIO eventos, streams y más.

Eventos do lado do servidor com Javascript

O primeiro que devemos entender é o que são eventos do lado do servidor, que não têm nada a ver com os eventos Javascript que conhecemos e utilizamos nas aplicações web do lado do cliente. Aqui os eventos são produzidos no servidor e podem ser de diversos tipos dependendo das bibliotecas ou classes que estejamos trabalhando. Para termos uma ideia mais exata, pensemos por exemplo em um servidor HTTP, onde teríamos o evento de receber uma solicitação. Para dar outro exemplo, em um stream de dados teríamos um evento quando se recebe um dado como uma parte do fluxo.

Módulo de eventos

Os eventos se encontram em um módulo independente que temos que solicitar em nossos programas criados com Node JS. Isso é feito com a sentença "require" que vimos em artigos anteriores quando falávamos de módulos.

var eventos = require('events');

Dentro desta biblioteca ou módulo você tem uma serie de utilidades para trabalhar com eventos.

Vejamos primeiro o emissor de eventos, que você encontra na propriedade EventEmitter.

var EmisorEventos = eventos.EventEmitter;

Nota: Esse "EmissorEventos" é uma classe de programação orientada a objetos (POO), por isso foi colocado no nome da classe a primeira letra em maiúscula. Por convenção se faz assim com os nomes das classes em POO.

Como definir um evento em NodeJS

Em "Node" existe um loop de eventos, de modo que quando você declara um evento, o sistema fica escutando no momento que se produz, para executar então uma função. Essa função é conhecida como "callback" ou como "manipulador de eventos" e contém o código que você quer que seja executado no momento que se produza o evento ao que a associamos. Primeiro teremos que "instanciar" um objeto da classe EventEmitter, que tínhamos salvado na variável EmissorEventos no ponto anterior deste artigo.

var ee = new EmisorEventos();

Depois teremos que usar o método on() para definir as funções manipuladoras de eventos, ou seu equivalente addEventListener(). Para emitir um evento mediante código Javascript usamos o método emit().

Nota: Como veremos, se encontram muitas similitudes à hora de escrever eventos em outras bibliotecas Javascript como jQuery. O método on() é exatamente igual, ao menos sua sintaxe. O método emit() seria um equivalente a trigger() de jQuery. Por exemplo, vou emitir um evento chamado "dados", com este código.

ee.emit('dados', Date.now());

Agora vou fazer uma função manipuladora de eventos que se associe ao evento definido em "dados".

ee.on('datos', function(fecha){
   console.log(fecha);
});

Se desejarmos aproveitar algumas das características mais interessantes de aplicações NodeJS talvez nos ajude usar setInterval() e assim poderemos estar emitindo dados a cada certo tempo:

var eventos = require('events');

var EmisorEventos = eventos.EventEmitter;
var ee = new EmisorEventos();
ee.on('datos', function(fecha){
   console.log(fecha);
});
setInterval(function(){
   ee.emit('datos', Date.now());
}, 500);

Podemos salvar isto como "eventos.js" ou com qualquer outro nome de arquivos que desejemos. O salvamos no lugar que quisermos de nosso disco rígido.

Para colocá-lo em execução vamos em linha de comandos até a pasta onde tenhamos colocado o arquivo "eventos.js" ou como quer que você o tenha chamado e escreva o comando:

node eventos.js

Nota: Você também poderia ter executado o comando "node eventos" sem indicar a extensão ".js" porque NodeJS já assume que você colocou essa extensão no arquivo. Como resultado, veremos que começam a aparecer linhas na janela do terminal do sistema operativo, com um número, que é o "timestamp" da data de cada instante inicial. Você pode sair do programa pressionando as teclas CTRL + c.

Se você fica confuso com isto de executar arquivos por meio de linha de comando, a continuação você pode ver uma tela do terminal onde colocamos em funcionamento este pequeno exercício de eventos.

Conclusão

Com isto pudemos obter uma primeira aproximação ao que são os eventos em NodeJS e a maneira de criar essas funções "callback" para executar quando se produzem, também chamadas manipuladores de eventos.
Nos próximos capítulos passaremos a falar dos streams, que são bastante mais importantes no mundo de Node.JS.






Usuários :    login / registro

Manuais relacionados
Categorias relacionadas
O autor

Home | Sobre nós | Copyright | Anuncie | Entrar em contato