Détection des déconnexions Eventmachine et test de reconnexion
-
29-10-2019 - |
Question
J'essaye de construire un système sur la machine d'événements qui détectera quand une connexion TCP a échoué et testera pour voir si une reconnexion peut être déclenchée.J'ai parcouru tout le code de la machine événementielle mais je n'arrive pas à trouver où il y a un rappel pour la connexion, soit en action, soit en reconnexion.Même si j'ai défini les heures dans le code, il n'y a pas de rappel sur la connexion en attente, et si j'essaie de re-déclencher la reconnexion, je ne reçois aucun retour indiquant si la connexion a réussi ou échoué.Je l'utilise pour me connecter efficacement à une interface telnet.
EventMachine.run do
c = EventMachine.connect "10.8.1.99",5000,ConnectInterface
c.pending_connect_timeout = 10
fin
Toute aide serait grandement appréciée.
La solution
EventMachine fournit la méthode de détachement pour cela:
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
attention La méthode unbind sera appelée lors de la déconnexion, que vous ayez déclenché la déconnexion ou non.
Autres conseils
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