NodeJS "Web en tiempo real"

27
Web en tiempo real

description

La presentación sobre Node JS que hice para el Meetup de Lenguajes Dinámicos.

Transcript of NodeJS "Web en tiempo real"

Page 2: NodeJS "Web en tiempo real"

EVENTED I/O

Page 3: NodeJS "Web en tiempo real"

Server DB

MODELO TRADICIONAL

Page 4: NodeJS "Web en tiempo real"

Server DB

MODELO TRADICIONAL

Page 5: NodeJS "Web en tiempo real"

Server DB

MODELO TRADICIONAL

Page 6: NodeJS "Web en tiempo real"

Server DB

MODELO C/EVENTOS

Page 7: NodeJS "Web en tiempo real"

Server DB

MODELO C/EVENTOS

Page 8: NodeJS "Web en tiempo real"

MainLoop

DB

MODELO C/EVENTOS

Page 9: NodeJS "Web en tiempo real"

Twisted

EventMachine

Page 10: NodeJS "Web en tiempo real"

Evented I/O for V8 JavaScript.

Page 11: NodeJS "Web en tiempo real"

INSTALACIÓN

$ curl -O http://nodejs.org/dist/node-v0.2.5.tar.gz # http://nodejs.org/#download $ tar xvf node-v0.2.5.tar.gz $ cd node-v0.2.5 $ ./configure $ make $ sudo make install $ node --version

# => v0.2.5 $ node > // modo interactivo > [Ctrl+C]

Page 12: NodeJS "Web en tiempo real"

DOCUMENTACIÓNhttp://nodejs.org/api.html

Page 13: NodeJS "Web en tiempo real"

ESTRUCTURAFramework de bajo nivel

Page 14: NodeJS "Web en tiempo real"

SERVIDOR WEB

1 var http = require('http');2 3 http.createServer(function (req, res) {4 res.writeHead(200, {'Content-Type': 'text/plain'});5 res.end('Hello World\n');6 }).listen(8124, "127.0.0.1");78 console.log('Server running at http://127.0.0.1:8124/');

Page 15: NodeJS "Web en tiempo real"

EXPRESS 1 var app = express.createServer();2 3 app.get('/', function(req, res){4 res.send('Hello World');5 });6 7 app.listen(3000);

Node’s Sinatra

http://expressjs.com/

Page 16: NodeJS "Web en tiempo real"

SISTEMA DE PAQUETES

Page 17: NodeJS "Web en tiempo real"

NODE PACKAGE MANAGERhttp://npmjs.org/

Page 18: NodeJS "Web en tiempo real"

WEB SOCKETS

Page 19: NodeJS "Web en tiempo real"

CONEXIÓN PERSISTENTE

Page 20: NodeJS "Web en tiempo real"

BAJO NIVEL

https://github.com/jackyyll/nodejs-websockets

1 var sys = require('sys'), 2 WebSocket = require('../websockets'); 3 4 function TimeJS () { 5 var self = this; 6 7 this.websocket = new WebSocket.Server({resource: '/time', host: 'localhost'}); 8 this.connections = new Array(); 9 10 this.websocket.addListener('connect', function (server, connection) {11 self.connections[connection.socket.fd] = "";12 });13 this.websocket.addListener('disconnect', function (server, connection) {14 clearInterval(self.connections[connection.socket.fd]);15 self.connections.splice(self.connections.indexOf(connection.socket.fd), 1);16 });17 this.websocket.addListener('receive', function (data, connection) {18 if (data == 'start') {19 self.connections[connection.socket.fd] = setInterval(function () {20 connection.write(JSON.stringify({time: new Date().toString()}));21 }, 1000);22 }23 });24 }25 26 new TimeJS();

Page 21: NodeJS "Web en tiempo real"

Faye is an easy-to-use publish-subscribe messaging system based on the Bayeux protocol.

It provides message servers for Node.js and Rack, and clients for use in Node and Ruby programs

http://faye.jcoglan.com

Page 22: NodeJS "Web en tiempo real"

INICIAR UN SERVIDOR 1 var Faye = require('faye'), 2 server = new Faye.NodeAdapter({mount: '/'}); 3 4 server.listen(8000);

Page 23: NodeJS "Web en tiempo real"

CREAR UN CLIENTE 5 var client = new Faye.Client('http://localhost:8000/'); 6 7 client.subscribe('/messages', function(message) { 8 alert('Got a message: ' + message.text); 9 });

Page 24: NodeJS "Web en tiempo real"

ENVIAR MENSAJES

10 client.publish('/messages', {11 text: 'Hello world'12 });

Page 25: NodeJS "Web en tiempo real"

MAS SIMPLEWeb Sockets as a Service

http://pusherapp.com/

Page 26: NodeJS "Web en tiempo real"

(DEMO)https://github.com/sagmor/mapsketcher

Page 27: NodeJS "Web en tiempo real"

Fotos: sjunnesson, atranman, denial_land, moriza, ghero79 @ Flickr