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
INSTALACIÓN
Instalar desde http://nodejs.org
demo node
El servidor más sencillo de la historia
Ejecutarlo con
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
creando webapp
Desde terminal escribimos:
package.json
Instalamos las dependencias con:
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
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