Archivo de la categoría: Nodejs

Socket.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);

Sigue leyendo

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.

Sigue leyendo

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.

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

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.

Page1__Lucidchart

Una vez inciado el cron el envio de mensajes se realiza de la siguiente manera

 childProcess.send({values:[]}) 

Page2__Lucidchart

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

Source 

Sending objects

Fork process

Nota: Si requiren algo mas complejo con respecto a este tema recomiendo usar este modulo modulo.

Sigue leyendo