yo probamos este y que está funcionando:
#!/usr/bin/env ruby
require 'eventmachine'
module EchoServer
def post_init
puts "-- someone connected to the echo server!"
end
def receive_data data
send_data ">>>you sent: #{data}"
close_connection if data =~ /quit/i
end
def unbind
puts "-- someone disconnected from the echo server!"
end
end
EventMachine::run {
EventMachine::start_server "127.0.0.1", 8081, EchoServer
EventMachine::start_server "127.0.0.1", 8082, EchoServer
EventMachine::start_server "127.0.0.1", 8083, EchoServer
}
aquí se obtiene 3 Servicios de eco con diferentes puertos. (Era demasiado perezoso para implementar diferentes servicios).
Por lo tanto, es muy fácil crear una gran envoltura multiservicio.
actualización
ejemplo de código simple para el arranque basado en la condición de un servidor EM:
#!/usr/bin/env ruby
# encoding: utf-8
require 'eventmachine'
module EchoServer
def post_init
puts "-- someone connected to the echo server!"
end
def receive_data data
send_data ">>>you sent: #{data}"
close_connection if data =~ /quit/i
end
def unbind
puts "-- someone disconnected from the echo server!"
end
end
$check_ok = false
EventMachine::run {
puts "checker var is: #{$check_ok}"
EventMachine::start_server "127.0.0.1", 8081, EchoServer
EventMachine::start_server "127.0.0.1", 8082, EchoServer
puts "echos on 8081 and 8082 started."
# periodic timer check - every 1 sec
EventMachine.add_periodic_timer(1) {
if $check_ok
EventMachine::start_server "127.0.0.1", 8083, EchoServer
$check_ok = false
puts "echo on 8083 started!"
end
}
# timer triggered after 10 secs - only once!
EventMachine.add_timer(10) {
$check_ok = true
puts "checker var is #{$check_ok} now!"
}
}
En este ejemplo se inicia el servidor de eco en el puerto 8083 ~ 10 segundos después del inicio de aplicaciones . Intenta telnet localhost 8083
antes y después de este temporizador, verás el efecto.
También puede usar valores inferiores a 1 segundo, como 0,01 por cada 1/100 segundos de verificación.
Este podría ser su punto de partida para sus propias ideas. El temporizador periódico es su ciclo interno, en el que engancha sus comprobaciones condicionales para iniciar servicios adicionales.
buen tutorial (PDF): eventmachine introduction (blog post)
yo esperaría si el protocolo es inequívoca que usted debe ser capaz de ejecutar miles de diferentes servicios dentro de un proceso de servidor. – sarnold