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.

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top