nodejs "web en tiempo real"

Post on 01-Jul-2015

1.965 Views

Category:

Technology

0 Downloads

Preview:

Click to see full reader

DESCRIPTION

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

TRANSCRIPT

EVENTED I/O

Server DB

MODELO TRADICIONAL

Server DB

MODELO TRADICIONAL

Server DB

MODELO TRADICIONAL

Server DB

MODELO C/EVENTOS

Server DB

MODELO C/EVENTOS

MainLoop

DB

MODELO C/EVENTOS

Twisted

EventMachine

Evented I/O for V8 JavaScript.

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]

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

ESTRUCTURAFramework de bajo nivel

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/');

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/

SISTEMA DE PAQUETES

NODE PACKAGE MANAGERhttp://npmjs.org/

WEB SOCKETS

CONEXIÓN PERSISTENTE

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();

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

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

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 });

ENVIAR MENSAJES

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

MAS SIMPLEWeb Sockets as a Service

http://pusherapp.com/

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

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

top related