Está en la página 1de 4

EventosenNodeJS

LoseventosenNodeJS,cmoseimplementanyqucaractersticastienenloseventos
Javascriptdelladodelservidor.
EnelManualdeNodeJShemospresentadoyainformacionesbastanteampliasparaempezaradarlos
primerospasosconestaplataformadedesarrollo.Annosquedanmuchascosasimportantesy
bsicasporconocer,comoloseventos.

Enesteartculoexplicaremosqusonloseventosdelladodelservidorycmoseimplementanen
Node.JS.Porsiosinteresa,esimportantecomentarqueestetextoestextractadodelsegundo
programa#nodeIOemitidoendirectoenDesarrolloWeb.comporAlejandroMoralesyMiguelAngel
Alvarez:#nodeIOeventos,streamsyms.

EventosdelladodelservidorconJavascript
Loprimeroquedebemosentenderesqusoneventosdelladodelservidor,quenotienennadaque
verconloseventosJavascriptqueconocemosyutilizamosenlasaplicacioneswebdelladodelcliente.
Aquloseventosseproducenenelservidorypuedenserdediversostiposdependiendodelaslibreras
oclasesqueestemostrabajando.
Parahacernosunaideamsexacta,pensemosporejemploenunservidorHTTP,dondetendramosel
eventoderecibirunasolicitud.Porponerotroejemplo,enunstreamdedatostendramosunevento
cuandoserecibeundatocomounapartedelflujo.

Mdulodeeventos
Loseventosseencuentranenunmduloindependientequetenemosquerequerirennuestros
programascreadosconNodeJS.Lohacemosconlasentencia"require"queconocimosenartculos
anteriorescuandohablbamosdemdulos.
vareventos=require('events')

Dentrodeestalibreraomdulotienesunaseriedeutilidadesparatrabajarconeventos.
Veamosprimeroelemisordeeventos,queencuentrasenlapropiedadEventEmitter.
varEmisorEventos=eventos.EventEmitter
Nota:Ese"EmisorEventos"esunaclasedeprogramacinorientadaaobjetos(POO),poresoseleha
puestoenelnombredelaclaselaprimeraletraenmayscula.Porconvencinsehaceasconlos
nombresdelasclasesenPOO.

CmodefiniruneventoenNodeJS
En"Node"existeunbucledeeventos,demodoquecuandotdeclarasunevento,elsistemasequeda
escuchandoenelmomentoqueseproduce,paraejecutarentoncesunafuncin.Esafuncinse
conocecomo"callback"ocomo"manejadordeeventos"ycontieneelcdigoquequieresquese
ejecuteenelmomentoqueseproduzcaeleventoalquelahemosasociado.
Primerotendremosque"instanciar"unobjetodelaclaseEventEmitter,quehemosguardadoenla
variableEmisorEventosenelpuntoanteriordeesteartculo.
varee=newEmisorEventos()
Luegotendremosqueusarelmtodoon()paradefinirlasfuncionesmanejadorasdeeventos,osu
equivalenteaddEventListener().ParaemitiruneventomediantecdigoJavascriptusamoselmtodo
emit().
Nota:Comoveremos,seencuentranmuchassimilitudesalahoradeescribireventosenotraslibreras
JavascriptcomojQuery.Elmtodoon()esexactamenteigual,almenossusintaxis.Elmtodoemit()
seraunequivalenteatrigger()dejQuery.
Porejemplo,voyaemitiruneventollamado"datos",conestecdigo.
ee.emit('datos',Date.now())
Ahoravoyahacerunafuncinmanejadoradeeventosqueseasociealeventodefinidoen"datos".
ee.on('datos',function(fecha){
console.log(fecha)
})
SideseamosaprovecharalgunasdelascaractersticasmsinteresantesdeaplicacionesNodeJS
quizsnosvengabienusarsetInterval()yaspodremosestaremitiendodatoscadaciertotiempo:
setInterval(function(){
ee.emit('datos',Date.now())

},500)CdigocompletodelejemplodeeventosyejecucinConestoyahabremosconstruidoun
ejemploNodeJStotalmentefuncional.Elcdigocompletoseraelsiguiente:
vareventos=require('events')
varEmisorEventos=eventos.EventEmitter
varee=newEmisorEventos()
ee.on('datos',function(fecha){
console.log(fecha)
})
setInterval(function(){
ee.emit('datos',Date.now())
},500)
Estolopodemosguardarcomo"eventos.js"oconcualquierotronombredearchivosquedeseemos.Lo
guardamosenellugarquequeramosdenuestrodiscoduro.
Paraponerloenejecucinnosvamosenlneadecomandoshastalacarpetadondehayamoscolocado
elarchivo"eventos.js"ocomoquieraquelohayasllamadoyescribeselcomando:
nodeeventos.js
Nota:Tambinpodrashaberejecutadoelcomando"nodeeventos"sinindicarlaextensin".js"porque
NodeJSyadaporsupuestoquelehascolocadoesaextensinalarchivo.
Comoresultado,veremosqueempiezanaaparecerlneasenlaventanadelterminaldelsistema
operativo,conunnmero,queesel"timestamp"delafechadecadainstanteinicial.Puedessalirdel
programapulsandolasteclasCTRL+c.
Porsitelaestodeejecutararchivospormediodelalneadecomando,acontinuacinpuedesveruna
pantalladelterminaldondehemospuestoenmarchaestepequeoejerciciodeeventos.

Conclusin
ConestohemospodidoobtenerunaprimeraaproximacinaloquesonloseventosenNodeJSyla
maneradecrearesasfunciones"callback"paraejecutarcuandoseproducen,tambinllamadas
manejadoresdeeventos.
Enlossiguientescaptulospasaremosahablarosdelosstreams,quesonbastantemsimportantesen
elmundodeNode.JS.