2012-01-17 2 views
2

Я пытаюсь построить систему ontop машины событий, которая обнаружит, когда TCP-соединение потерпит неудачу, и проверит, можно ли запустить пересоединение. Я прошел весь код eventmachine, но не могу найти, где есть обратный вызов для соединения либо тайм-аут в действии, либо при повторном подключении. Несмотря на то, что я установил время в коде, нет обратного вызова в ожидающем подключении, и если я попытаюсь перезапустить повторное подключение, я не получаю никакой обратной связи о том, было ли соединение успешным или неудачным. Я использую его для эффективного подключения к telnet-интерфейсу.Обнаружение отключений eventmachine и тестирование для повторного подключения

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

конец

Любая помощь будет принята с благодарностью.

ответ

1

EventMachine обеспечивают UNBIND метод для этого:

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 

знать отвязать метод будет вызван при разъединении срабатывает ли вы отключить или нет.

2
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