Pregunta

Estoy tratando de construir un sistema que incluya una máquina de eventos que detectará cuándo una conexión TCP ha fallado y probará para ver si se puede disparar una reconexión. He pasado por todo el código EventMachine, pero parece que no puedo encontrar dónde hay una devolución de llamada para la conexión, ya sea en acción o en la reconexión. Aunque he establecido los tiempos en el código, no hay devolución de llamada en la conexión pendiente, y si trato de volver a conectarme, no recibo comentarios sobre si la conexión ha tenido éxito o fallado. Lo estoy usando para conectarme a una interfaz de Telnet.

EventMachine.run do
c = EventMachine.connect "10.8.1.99",5000,ConnectInterface
c.pending_connect_timeout = 10

final

Cualquier ayuda sería muy apreciada.

¿Fue útil?

Solución

EventMachine proporciona el método sinind para esto:

module ConnectInterface
  def connection_completed
    puts "connected"
  end

  def unbind
    puts "disconnected"
  end
end


EM::run do
  EM::connect("10.8.1.99", 5000, ConnectInterface)
end

Tenga en cuenta que el método sinind se convocará en desconexión si activó la desconexión o no.

Otros consejos

module MyCallBack

def unbind  # define your unbind method
  puts "#{@@ip}: #{@@port}"
  puts "-- disconnected from remote server!"
  puts "-- attempting reconnection"
  reconnect @@ip, @@port # use reconnect, already provided by EventMachine 
end

end
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top