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...
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
e...
Ruby EventMachine
require 'eventmachine'
EM.run do
EM.add_timer(7) do
puts "Listo"
EM.stop_event_loop
end
EM.add_periodic_...
EventMachine::Connection
EventMachine::Connection
require 'eventmachine'
class EchoHandler < EM::Connection
def receive_data(data)
send_data(data)
...
EventMachine::Connection
Events
post_init
connection_completed
receive_data(data)
unbind
Methods
close_connection
close_co...
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 =>
#{Threa...
EM#defer
EM#defer con Callback
require 'eventmachine'
EM.run do
operation = proc do
5 + 5
end
callback = proc do |count|
puts "5 + ...
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
Ruby EventMachine + em-WebSocket
Ruby EventMachine + em-WebSocket
Upcoming SlideShare
Loading in...5
×

Ruby EventMachine + em-WebSocket

3,289

Published on

Presentación de la charla "Ruby EventMachine + em-WebSocket", la cual fue expuesta en la reunión inaugural del Grupos de Usuarios Ruby de Venezuela - http://ruby.org.ve

0 Comments
3 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,289
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
32
Comments
0
Likes
3
Embeds 0
No embeds

No notes for slide

Ruby EventMachine + em-WebSocket

  1. 1. Ruby EventMachine Y un pequeño ejemplo usando em-websockets @CarlosForero
  2. 2. Concurrencia
  3. 3. Concurrencia usando hilos (Threads)
  4. 4. 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
  5. 5. Concurrencia usando el Patrón Reactor (Reactor Pattern)
  6. 6. Reactor Pattern vs Multithreading Apache Thread Based ServerEvent Driven Based Server
  7. 7. Reactor Pattern vs Multithreading
  8. 8. Reactor Pattern vs Multithreading
  9. 9. Concurrencia usando el Patrón Reactor (Reactor Pattern)
  10. 10. Reactor Pattern
  11. 11. Ruby EventMachine require 'eventmachine' EM.run do EM.add_timer(5) do puts "Extremadamente simple... adios!" EM.stop end end
  12. 12. 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
  13. 13. EventMachine::Connection
  14. 14. 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
  15. 15. EventMachine::Connection Events post_init connection_completed receive_data(data) unbind Methods close_connection close_connection_after_writing
  16. 16. Un solo hilo para el reactor
  17. 17. 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
  18. 18. EM#defer
  19. 19. 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
  20. 20. EM#defer con Callback
  21. 21. EM#defer con Callback Un ejemplo más práctico con... gem install eventmachine_httpserver
  22. 22. Ahora si... gem install em-websockets
  23. 23. Pero antes un repaso...
  24. 24. Arquitectura HTTP
  25. 25. Ajax (Pull)
  26. 26. Comet (Push)
  27. 27. HTML 5 WebSockets
  28. 28. HTML 5 WebSockets
  29. 29. WebSockets Events
  30. 30. Chat Server con em-websockets :-)
  31. 31. Esta presentación se hizo con Si la quieres hazme follow y solicítamela... Gracias por su atención @CarlosForero
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×