Обнаружение отсоединения событийной машины и тестирование для повторного подключения - PullRequest
2 голосов
/ 17 января 2012

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

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

конец

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

Ответы [ 2 ]

2 голосов
/ 18 февраля 2012
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
1 голос
/ 19 января 2012

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

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

...