检测事件机器断开连接并测试重新连接

时间:2012-01-17 03:12:58

标签: ruby sockets telnet eventmachine reconnect

我正在尝试在事件计算机的顶部构建一个系统,该系统将检测TCP连接何时失败,并将测试是否可以触发重新连接。我已经浏览了所有的eventmachine代码,但似乎无法找到连接回调的位置,无论是在执行中还是在重新连接时。即使我在代码中设置了时间,挂起连接上也没有回调,如果我尝试重新启动重新连接,则无法获得有关连接是成功还是失败的反馈。我正在用它来连接有效的telnet接口。

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

非常感谢任何帮助。

2 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

请注意,无论您是否触发了断开连接,都会在断开连接时调用unbind方法。