El patron de diseño Fluent es un patron muy util y versatil que no permite encadenar varias llamadas o metodos de una misma clase y luego una vez este todo completado ejecutar otro codigo que realizara la accion final, en muchos casos un builder o una simple llamada a un api.
Sigue leyendoArchivo de la etiqueta: nodejs
Promise Resolve vs Reject – JavaScript
Trabajar con promesas en javascript es cosa del dia a dia, y en mas de una ocacion nos tocara trabajar con promesas y callbacks en el mismo codigo, pero para bien de nuestro codigo es necesario tratar de eliminar esos callbacks lo antes posibles.
Sigue leyendoSwift iOS App Con Socket.io
Socket.io es una excelente herramienta para trabajar con WebSockets e implementar funcionalidades de tiempo real en nuestras aplicaciones tanto sean web como aplicaciones mobiles. En este caso estare realizando un ejemplo basico de el uso de Socket.io junto a una aplicación iOS hecha con swift.
Sigue leyendoSocket.IO Rooms & NameSpace
Socket.io es una excelente herramienta para lo que conocemos como aplicaciones en tiempo real, si tenemos una gran cantidad de usuario y queremos organizarlos y/o segmentarlo para saber a que grupo de usuarios le enviamos cierta información las características de Room y Namespace.
Los namespace
Son una segmentación de nivel superior, tanto el cliente como el server deben tener definidos estos contextos ya definidos una vez la aplicación esta en ejecución a diferencia de los rooms. Por defecto todas las instancias de socket.io usan un namespace ‘/’ dependera de nosotros queremos usar uno extra.
var server = require('http').Server(app); var io = require('socket.io')(server);
WebSockets (SocketIO & Express)
SocketIO una vez salió a la luz revoluciono la forma en la que las aplicaciones se realizaban, y nos brindo a los desarrolladores una herramienta bastante poderosa en cuanto al desarrollo de aplicaciones web se refiere. Brindándonos la capacidad de poder comunicarnos con nuestros clientes de forma directa en tiempo real.
Aprovechando la acogida de las apis de HTML5 socket.io nos brinda una interface para poder utilizar WebSockets y ademas a eso nos abstrae de usar metodos alternativos a WebSockets para navegadores que no lo soporten y aun así brindar a todos nuestros usuarios aplicaciones en tiempo real. Esta libreria cae perfecto para aplicaciones como Chats, Juegos, Analitica y demás, se puede ser bien creativo cuando tiene una comunicación bi-direccional con nuestros usuarios.
Usando Redis en NodeJS
Usar Redis hoy día para hacer Caching de data que usamos constantemente es bien común y Nodejs no se queda atrás con esto. Por eso veremos un uso básico del mismo.
Redis también puede ser usado para implementar el patron Pub/Sub, donde nos suscribimos a ciertos eventos y así mismo ejecutar ciertas acciones en base a nuestra data obtenida.
Iniciando con Gulp
El automatizar procesos siempre ha sido una de las tareas de los ingenieros y en el área de software no es la excepción a la regla. Con el auge hoy día de los super sets de JavaScript (CoffeScript y demás) y preprocesadores de Css (Sass, less y demás) se convierte algo tedioso e inhumano estar procesando esos archivos manualmente cada vez que es realizado un cambio en uno de estos, así que para ese tipo de tareas y/o tareas particulares que nuestros proyectos requieran lo podremos lograr con lo que hoy se conocen como «Task runners» ahi es donde Gulp hace su entrada.
En este tutorial estaremos viendo uno de los mas nuevos en esta área y es Gulp Es relativamente nuevo pero una vez llego a la vista de los desarrolladores muchos han entrando en una relación seria con este producto.
Sigue leyendo
Queue Job AMQP (RabbitMQ) y Api web usando Nodejs (Hapi)
En este tutorial estaremos viendo como crear un job worker Cliente y Servidor del mismo, usando HapiJs (Nodejs Framework) y RabbitMQ como nuestra cola de trabajo.
Esto de las colas de trabajos es muy util a la hora de quitarle carga a nuestras aplicaciones y volverlas asíncronas en torno a cuando se realiza se realiza una petición de realizar cierta acción que podría comprometer el rendimiento de nuestra aplicación, se puede decir que es una forma de comunicar sistemas.
Las colas de trabajos suelen usarse mucho cuando nuestros sistemas tienen que interactuar con sistemas de terceros y los cuales no tenemos el control de disponibilidad / rendimiento cosa que si le agregamos la capacidad de trabajar procesos en background con una cola nuestra aplicación no sufrirá ningún inconveniente si estas aplicaciones de terceros esta dando problemas.
Sigue leyendo
PM2 – Manejo de procesos Nodejs
Subir procesos y bajar procesos en un sistema linux puede ser suficiente para poner en ejecución un server nodejs y es cool en algunos casos se siente bien ejecutar kill PID para detener procesos pero luego de un tiempo no es tan cool, asi que las personas cool del area crearon PM2 para nuestro uso.
Sigue leyendo
Worker job usando Nodej.s
En alguno proyectos es necesario tener una tarea ejecutando cada cierto tiempo, la cual estaria haciendo desde un heardbeat hasta una consulta en una base de datos para consumir un web service en fin muchas cosas. En este tutorial estaré mostrando una alternativa al poderoso cron de Linux pero esta vez con nodejs.
El ejemplo consta de 2 archivos un archivo server.js que es nuestro servidor js y otro archivo llamado task.js que es nuestro cron.
Una vez inciado el cron el envio de mensajes se realiza de la siguiente manera
childProcess.send({values:[]})
Server.js
var http = require('http'); var process = require('child_process'); var app = http.createServer(function(req,res){ child.send({'key':'value'}) res.end('hello'); }); console.log('server running'); // se realiza el fork del nuevo proceso var child = process.fork('task.js'); // dispara el evento message hacia el fork child.send({'key':'valor'}) console.log('proceso hijo iniciado'); app.listen(3000);
Task.js
var context = []; (function(context){ setInterval(function(){ var value = context.pop() console.log('iteraciones ' + value); },1000); })(context); process.on('message',function(value){ console.log('mensaje recibido'); context.push(value); });
Esta seria otra opcion para el task.
Task2.js
var context = []; var process = function(){ var value = context.pop() console.log('iteraciones ' + value); } process.on('message',function(value){ console.log('mensaje recibido'); context.push(value); });
Mi recomendacion es que para algun proceso ligero/pesado y no quieras tener que incluir algun nuevo modulo de node.js o simplemente quieres manejarlo tu mismo lo intententes de esta manera.
Referencias
Child Process Nodejs
Nota: Si requiren algo mas complejo con respecto a este tema recomiendo usar este modulo modulo.