Detectar las desconexiones de EventMachine y las pruebas para reconectar
-
29-10-2019 - |
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.
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