Node.js? Too mainstream |
Actualmente estamos viviendo una carrera continua para ser más modernos: desde frameworks como Nodyn donde desarrollamos en ClojureScript que compila a JavaScript, se ejecuta en Node.js que compila a una… ¡JVM!, a infinidad de variedades de AngularJS (EmberJS, Backbone, Knockout, Ractive.js etc.), alternativas a Grunt como gulp.js, alternativas a Yeoman como FireShell, pasando por convertidores de JavaScript a CoffeeScript, o mejoras sobre el propio CoffeeScript como Six o Functional Reactive Programming como bacon.js.
Básicamente, estos son los pasos principales para desarrollar cualquier proyecto web en 2014:
- Escribe tweets sobre él.
- Fotografía tu espacio de trabajo y súbelo a Instagram.
- Elige tu framework JS.
- Configura tu MongoDB y Redis.
- Visita Reddit, meneame, forocoches y similares.
- …
- Profit
Bromas aparte, es para nosotros un placer tener ya disponible un SDK de Latch para Node.js e incluso una estrategia de autenticación para PassportJS de Latch. Para los que no lo conozcan, Node.js es un framework creado en 2009 por Ryan Dahl y su desarrollo está patrocinado por la empresa Joyent (compañía que ofrece IaaS y PaaS, y entre cuyos inversores se encuentra Telefónica).
Su característica principal es que está basado en el famoso y potente motor V8 de JavaScript de Google y pretende ofrecer una forma fácil y segura de crear aplicaciones en JavaScript escalables y de altas prestaciones. De hecho una de las características que cuesta un poco al principio entender es su orientación mayoritaria a utilizar código asíncrono y basado en eventos, que puede llegar a ser más complejo que uno síncrono normal.
Si se comprueba el código del SDK de Latch veremos que, realmente, es muy sencillo (el código siguiente está extraído de index.js).
Primero tenemos que añadir las cabeceras HTTP que necesitan recibir nuestros servidores de Latch para saber que las peticiones son correctas:
Y luego simplemente hacemos la petición HTTP a nuestros servidores de Latch con la operación escogida.
Observando este último código podemos ver una parte de funcionamiento de Node.js donde se aprecia ese carácter asíncrono que se ha mencionado. La petición HTTP que realizamos (el “request”) es a su vez una función donde podemos ver varios eventos; en la respuesta tenemos el evento “data”, que significa que estamos recibiendo datos, y también el evento “end” que significa que ya hemos recibido todos los datos y pueden ser tratados si se quiere (o se podrían haber tratado según llegaban). También existe un evento “error” en la petición, en el caso de que hubiera algún problema con la petición HTTP.
Así de sencillo; con unas cuantas líneas tenemos implementado todo el SDK de Latch en Node.js. También hemos puesto a disposición de todos una estrategia de autenticación de PassportJS para que sea fácil su uso: Ahí mostramos ejemplos de cómo utilizar Latch, ya sea como:
- …una estrategia más en este caso de autorización
- …una integración con cualquier otra estrategia de autenticación existente de PassportJS (se puede ver la lista de las soportadas actualmente en la página de PassportJS, aparte de la autenticación local que suele ser la más utilizada)
david.barroso@11paths.com