SlideShare une entreprise Scribd logo
1  sur  33
Télécharger pour lire hors ligne
Ruby EventMachine
Y un pequeño ejemplo usando
em-websockets
@CarlosForero
Concurrencia
Concurrencia usando hilos (Threads)
Concurrencia usando hilos (Threads)
Cada uno tiene su propio Stack
Uso de semáforos de sistema
operativo
Baja el desempeño cuando
aumenta el número de
conexiones
Concurrencia usando el Patrón Reactor
(Reactor Pattern)
Reactor Pattern vs Multithreading
Apache
Thread Based ServerEvent Driven Based Server
Reactor Pattern vs Multithreading
Reactor Pattern vs Multithreading
Concurrencia usando el Patrón Reactor
(Reactor Pattern)
Reactor Pattern
Ruby EventMachine
require 'eventmachine'
EM.run do
EM.add_timer(5) do
puts "Extremadamente simple... adios!"
EM.stop
end
end
Ruby EventMachine
require 'eventmachine'
EM.run do
EM.add_timer(7) do
puts "Listo"
EM.stop_event_loop
end
EM.add_periodic_timer(1) do
puts "Esperando ... "
end
end
EventMachine::Connection
EventMachine::Connection
require 'eventmachine'
class EchoHandler < EM::Connection
def receive_data(data)
send_data(data)
end
end
EM.run do
EM.start_server("127.0.0.1", 10000,
EchoHandler)
end
EventMachine::Connection
Events
post_init
connection_completed
receive_data(data)
unbind
Methods
close_connection
close_connection_after_writing
Un solo hilo para el reactor
EM#defer
require 'eventmachine'
require 'thread'
EM.run do
EM.add_timer(1) do
puts "Ejecución de hilo principal =>
#{Thread.current}"
EM.stop_event_loop
end
EM.defer do
puts "Ejecución en segundo hilo =>
#{Thread.current}"
end
end
EM#defer
EM#defer con Callback
require 'eventmachine'
EM.run do
operation = proc do
5 + 5
end
callback = proc do |count|
puts "5 + 5 == #{count}"
EM.stop
end
EM.defer(operation, callback)
end
EM#defer con Callback
EM#defer con Callback
Un ejemplo más práctico con...
gem install eventmachine_httpserver
Ahora si...
gem install em-websockets
Pero antes un repaso...
Arquitectura HTTP
Ajax (Pull)
Comet (Push)
HTML 5 WebSockets
HTML 5 WebSockets
WebSockets Events
Chat Server con em-websockets :-)
Esta presentación se hizo con
Si la quieres hazme follow
y solicítamela...
Gracias por su atención
@CarlosForero

Contenu connexe

Tendances

Symfony, cloud computing y web escalables
Symfony, cloud computing y web escalablesSymfony, cloud computing y web escalables
Symfony, cloud computing y web escalablesAsier Marqués
 
Abrir acceso por red a xampp
Abrir acceso por red a xamppAbrir acceso por red a xampp
Abrir acceso por red a xamppsaime
 
Iniciando el bricx command center
Iniciando el bricx command centerIniciando el bricx command center
Iniciando el bricx command centerDelia Jofré
 
Creando nuestro servidor de pruebas para WordPress por Noé Moreno
Creando nuestro servidor de pruebas para WordPress por Noé MorenoCreando nuestro servidor de pruebas para WordPress por Noé Moreno
Creando nuestro servidor de pruebas para WordPress por Noé MorenoWordPress Tarragona
 
Meterpreter en android el desembarco en tu smartphone
Meterpreter en android   el desembarco en tu smartphoneMeterpreter en android   el desembarco en tu smartphone
Meterpreter en android el desembarco en tu smartphoneJASENT
 
C R O N O M E T R O
C R O N O M E T R OC R O N O M E T R O
C R O N O M E T R Ogattuso12345
 
Clase 5 07_pasando de php a node_js
Clase 5 07_pasando de php a node_jsClase 5 07_pasando de php a node_js
Clase 5 07_pasando de php a node_jsfavilaf1200
 
Apache Storm: Instalación
Apache Storm: InstalaciónApache Storm: Instalación
Apache Storm: InstalaciónStratebi
 

Tendances (10)

Symfony, cloud computing y web escalables
Symfony, cloud computing y web escalablesSymfony, cloud computing y web escalables
Symfony, cloud computing y web escalables
 
Abrir acceso por red a xampp
Abrir acceso por red a xamppAbrir acceso por red a xampp
Abrir acceso por red a xampp
 
Iniciando el bricx command center
Iniciando el bricx command centerIniciando el bricx command center
Iniciando el bricx command center
 
Creando nuestro servidor de pruebas para WordPress por Noé Moreno
Creando nuestro servidor de pruebas para WordPress por Noé MorenoCreando nuestro servidor de pruebas para WordPress por Noé Moreno
Creando nuestro servidor de pruebas para WordPress por Noé Moreno
 
Servidor web
Servidor webServidor web
Servidor web
 
Meterpreter en android el desembarco en tu smartphone
Meterpreter en android   el desembarco en tu smartphoneMeterpreter en android   el desembarco en tu smartphone
Meterpreter en android el desembarco en tu smartphone
 
C R O N O M E T R O
C R O N O M E T R OC R O N O M E T R O
C R O N O M E T R O
 
Cronometro
CronometroCronometro
Cronometro
 
Clase 5 07_pasando de php a node_js
Clase 5 07_pasando de php a node_jsClase 5 07_pasando de php a node_js
Clase 5 07_pasando de php a node_js
 
Apache Storm: Instalación
Apache Storm: InstalaciónApache Storm: Instalación
Apache Storm: Instalación
 

Similaire à Ruby EventMachine + em-WebSocket

2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006Samuel Marrero
 
Servlets exposicion
Servlets exposicionServlets exposicion
Servlets exposicionFlashnet S.A
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a TomcatIker Canarias
 
Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSPousli07
 
7 Gemas de Ruby on Rails que podrían salvarte el dia
7 Gemas de Ruby on Rails que podrían salvarte el dia7 Gemas de Ruby on Rails que podrían salvarte el dia
7 Gemas de Ruby on Rails que podrían salvarte el diaFrancisco Aranda
 
Symfony, cloud computing y webs scalables - decharlas
Symfony, cloud computing y webs scalables - decharlasSymfony, cloud computing y webs scalables - decharlas
Symfony, cloud computing y webs scalables - decharlasDecharlas
 
Taller programación web ajax con jquery
Taller programación web  ajax con jqueryTaller programación web  ajax con jquery
Taller programación web ajax con jqueryPablo Galeana Bailey
 
Programacion web java
Programacion web javaProgramacion web java
Programacion web javaCésar Ocampo
 
Servicios web java php-perl-google
Servicios web java php-perl-googleServicios web java php-perl-google
Servicios web java php-perl-googleJosue Hernandez
 
Aplicaciones en tiempo real con nodejs y html5
Aplicaciones en tiempo real con nodejs y html5Aplicaciones en tiempo real con nodejs y html5
Aplicaciones en tiempo real con nodejs y html5programadoresmx
 

Similaire à Ruby EventMachine + em-WebSocket (20)

2. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-20062. Java Servlets (J2EE) - Curso 2005-2006
2. Java Servlets (J2EE) - Curso 2005-2006
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Tema servlets
Tema servletsTema servlets
Tema servlets
 
Servicios web Extendido_error perl
Servicios web Extendido_error perlServicios web Extendido_error perl
Servicios web Extendido_error perl
 
Java 7- Java Day Guatemala
Java 7- Java Day GuatemalaJava 7- Java Day Guatemala
Java 7- Java Day Guatemala
 
Servlets exposicion
Servlets exposicionServlets exposicion
Servlets exposicion
 
Introducción a Tomcat
Introducción a TomcatIntroducción a Tomcat
Introducción a Tomcat
 
Programación web con JSP
Programación web con JSPProgramación web con JSP
Programación web con JSP
 
Curso Java Avanzado 3 Js Ps
Curso Java Avanzado   3 Js PsCurso Java Avanzado   3 Js Ps
Curso Java Avanzado 3 Js Ps
 
Real time
Real timeReal time
Real time
 
7 Gemas de Ruby on Rails que podrían salvarte el dia
7 Gemas de Ruby on Rails que podrían salvarte el dia7 Gemas de Ruby on Rails que podrían salvarte el dia
7 Gemas de Ruby on Rails que podrían salvarte el dia
 
Symfony, cloud computing y webs scalables - decharlas
Symfony, cloud computing y webs scalables - decharlasSymfony, cloud computing y webs scalables - decharlas
Symfony, cloud computing y webs scalables - decharlas
 
Ejemplosencillocon rmi
Ejemplosencillocon rmiEjemplosencillocon rmi
Ejemplosencillocon rmi
 
Taller programación web ajax con jquery
Taller programación web  ajax con jqueryTaller programación web  ajax con jquery
Taller programación web ajax con jquery
 
Programacion web java
Programacion web javaProgramacion web java
Programacion web java
 
Servicios web java php-perl-google
Servicios web java php-perl-googleServicios web java php-perl-google
Servicios web java php-perl-google
 
Aplicaciones en tiempo real con nodejs y html5
Aplicaciones en tiempo real con nodejs y html5Aplicaciones en tiempo real con nodejs y html5
Aplicaciones en tiempo real con nodejs y html5
 
Perceptron multicapa
Perceptron multicapa Perceptron multicapa
Perceptron multicapa
 

Ruby EventMachine + em-WebSocket