Debido a que ya estoy cansado de utilizar servidores como Apache, Tomcat, Glashfish, entre otros, y notar que el rendimiento no era el óptimo (consultas de 100 querys por segundo, por ejemplo) me he visto en la necesidad de buscar algo más rápido y me he encontrado con esto, pero ¿qué diferencia este lenguaje del resto?.... JavaScript!!!
En pocas palabras NodeJS es ejecutar JavaScript del lado del servidor, no hablaré a profundidad de él, pues no es el tema del blog, sin embargo es importante resaltar que este es un lenguaje del lado del servidor orientado a eventos, así que haremos una pausa para explicar como funciona:
Para resumir tenemos un manejador de eventos y su selector, de esta forma (y a modo de ejemplo práctico) si tenemos un mensaje X entregado al servidor Y con parámetros Z, el servidor Y ejecutara el evento asociado al mensaje X sin darle importancia alguna al parámetro Y.... Si, es algo confuso pero tiene lógica, algunos enlaces no vendrían mal:
- Introducción a la programación dirigida por eventos (Genbeta)
- Programación dirigida por eventos (Wikipedia)
- Paradigma de programación dirigido por eventos (OpenLibra)
Para levantar el servidor solo basta con descomprimir los archivos, ubicarnos en la carpeta contenedora y ejecutar en terminal (símbolo del sistema bajo Windows) node mi_archivo.js.... Entonces, para comenzar comenzar creamos un archivo llamado inicio.js (por ejemplo):
Con esto indicamos que mi variable contendrá los métodos "http" del API, donde crearemos un servidor y este leera una petición (request) junto con una respuesta (reponse) a la IP 127.0.0.1 (localhost) imprimiendo "Hola Mundo" cada vez que hagamos una petición HTTP (desde el navegador) bajo el puerto 8888... Pero ¿qué hay de malo en este código?, el simple hecho de que en el servidor se ejecuten las cosas de manera asíncrona estamos colocando un arma de doble filo, por lo que debemos usar los "callbacks" de JavaScript para evitar esto, como por ejemplo, tengamos la siguiente ejecución:
Suponiendo que tenemos un query de al menos 100.000 (cien mil) registros y nuestra conexión a la BD es lenta, entonces primero nos mostrara el mensaje y posteriormente el resultado de nuestra consulta. Para solventar esto enviamos una función anómina bajo el método y retornando el valor procesado:
Bajo este mismo esquema debemos preparar nuestra ejecución de inicio en el servidor colocando el código de esta manera:
Una vez hecho esto nos aseguramos que se ejecute de forma síncrona enviando una función anónima por método ejecutando únicamente el método "listen" sólo cuando termine de preparar nuestro servidor, eso será todo por ahora
En pocas palabras NodeJS es ejecutar JavaScript del lado del servidor, no hablaré a profundidad de él, pues no es el tema del blog, sin embargo es importante resaltar que este es un lenguaje del lado del servidor orientado a eventos, así que haremos una pausa para explicar como funciona:
Para resumir tenemos un manejador de eventos y su selector, de esta forma (y a modo de ejemplo práctico) si tenemos un mensaje X entregado al servidor Y con parámetros Z, el servidor Y ejecutara el evento asociado al mensaje X sin darle importancia alguna al parámetro Y.... Si, es algo confuso pero tiene lógica, algunos enlaces no vendrían mal:
- Introducción a la programación dirigida por eventos (Genbeta)
- Programación dirigida por eventos (Wikipedia)
- Paradigma de programación dirigido por eventos (OpenLibra)
Para levantar el servidor solo basta con descomprimir los archivos, ubicarnos en la carpeta contenedora y ejecutar en terminal (símbolo del sistema bajo Windows) node mi_archivo.js.... Entonces, para comenzar comenzar creamos un archivo llamado inicio.js (por ejemplo):
var http = require('http'); http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hola Mundo'); }).listen(8888, '127.0.0.1');
Con esto indicamos que mi variable contendrá los métodos "http" del API, donde crearemos un servidor y este leera una petición (request) junto con una respuesta (reponse) a la IP 127.0.0.1 (localhost) imprimiendo "Hola Mundo" cada vez que hagamos una petición HTTP (desde el navegador) bajo el puerto 8888... Pero ¿qué hay de malo en este código?, el simple hecho de que en el servidor se ejecuten las cosas de manera asíncrona estamos colocando un arma de doble filo, por lo que debemos usar los "callbacks" de JavaScript para evitar esto, como por ejemplo, tengamos la siguiente ejecución:
var result = db.query("SELECT * FROM mi_tabla"); console.log("Prueba de Sincronia");
Suponiendo que tenemos un query de al menos 100.000 (cien mil) registros y nuestra conexión a la BD es lenta, entonces primero nos mostrara el mensaje y posteriormente el resultado de nuestra consulta. Para solventar esto enviamos una función anómina bajo el método y retornando el valor procesado:
db.query("SELECT * FROM mi_tabla", function(rows) { var result = rows; }); console.log("Prueba de Sincronia");
Bajo este mismo esquema debemos preparar nuestra ejecución de inicio en el servidor colocando el código de esta manera:
var http = require("http"); function onRequest(request, response) { response.writeHead(200, {"Content-Type": "text/plain"}); response.write("Peticion Recibida!"); response.end(); } http.createServer(onRequest).listen(8888); console.log("Servidor Iniciado!");
Una vez hecho esto nos aseguramos que se ejecute de forma síncrona enviando una función anónima por método ejecutando únicamente el método "listen" sólo cuando termine de preparar nuestro servidor, eso será todo por ahora
Recibe notificaciones por correo
Lamentablemente hay muchos usuarios en la red que han llegado al blog para escribir obscenidades, así que la moderación se hace necesaria. Recuerda utilizar un lenguaje correcto y espera a que sea aprobado.
Si necesitas publicar código haz click en "Conversión" para hacerlo legible.
ConversiónConversión