APLICACIONES REALTIME 

CON NODEJS  

EXPRESS + SOCKET.IO

@codalotla
@TheBlasfem



NODEJS


Te permite construir aplicaciones escalables 
usando Javascript en el servidor

NodeJS se ejecuta encima del Runtime V8 
(Motor de Chrome, es muy rápido! http://nodejs.org/jsconf2010.pdf)



  • NodeJS trabaja los requests en un hilo (singlethread)
  • I/O basado en eventos (event-driven)
  • Callbacks
  • Asíncrono -> Non-blocking







non-blocking

Blocking Code: (Como se ha visto en toda la vida):
var contents = fs.readFileSync("/etc/hosts");
console.log(contents);
console.log("haciendo otra cosa!"); 

Non-Blocking Code: (Esto te dejará dormir tranquilo):
var contents = fs.readFileSync("/etc/hosts", function(err, contents){
    console.log(contents);
});
console.log("haciendo otra cosa"); 

Gracias Callbacks


Bueno, algo más gráfico


INSTALACIÓN

Instalar desde http://nodejs.org

demo node

El servidor más sencillo de la historia

Ejecutarlo con 
node filename.js 

NODE PACKAGEd Modules

Repositorio de módulos NodeJS
Gestiona la instalación y actualización de módulos


https://www.npmjs.org
https://nodejsmodules.org


Framework más popular de NodeJS
Middlewares
Routes
Views

http://expressjs.com

INSTALACIÓN


Instalar Express globalmente
npm install -g express 

creando webapp


Desde terminal escribimos:
express nombreapp

estructura app express


package.json


Instalamos las dependencias con:
npm install 
Podemos instalar más dependencias npm con:
npm install namenpm --savedev 

lanzamos el app

Creamos server.js y escuchamos el app en el port 3000
require('./app').listen(3000); 
Levantamos el server
node server 

Nuestra app estará lista en http://localhost:3000

routes

/app.js
var users = require('./routes/users');
app.use('/users', users); 
/routes/users.js





Template Engine default en Express
HTML "precompilado"
http://jade-lang.com/

websockets

Canal de comunicación bidireccional 
Comunicación persistente vía server y browser
Enfocado en realizar actividades real time


Websockets con Javascript  http://socket.io

demo socket.io

Server

Client



Desarrollemos 

un app!

http://demominitwitter.herokuapp.com

node está empezando...

https://meteor.com


http://sailsjs.org



gracias

minitwitter: https://github.com/TheBlasfem/minitwitter

chat-rooms: https://github.com/TheBlasfem/example-socketio

Made with Slides.com