Rilevare le disconnessioni della Machine EventMachine e i test per la riconnessione
-
29-10-2019 - |
Domanda
Sto cercando di costruire un sistema in ontop della macchina per eventi che rileverà quando una connessione TCP non è riuscita e testerà per vedere se è possibile licenziare una riconnessione. Ho superato tutto il codice di Machine, ma non riesco a trovare dove c'è un callback per la connessione in azione in azione o in riconnessione. Anche se ho impostato i tempi nel codice, non c'è callback sulla connessione in sospeso e se provo a ricollegare il fuoco non ricevo alcun feedback sul fatto che la connessione sia riuscita o non è riuscita. Lo sto usando per connettermi a efficacemente un'interfaccia Telnet.
EventMachine.run do
c = EventMachine.connect "10.8.1.99",5000,ConnectInterface
c.pending_connect_timeout = 10
fine
Qualsiasi aiuto sarebbe molto apprezzato.
Soluzione
EventMachine fornisce il metodo INSIDID per questo:
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
Tieni presente che il metodo INBID verrà chiamato in disconnessione se hai innescato o meno la disconnessione.
Altri suggerimenti
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