27
Web en tiempo real

NodeJS "Web en tiempo real"

Embed Size (px)

DESCRIPTION

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

Citation preview

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