2

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

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

结尾

任何帮助将不胜感激。

4

2 回答 2

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
于 2012-02-18T18:40:47.757 回答
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 方法。

于 2012-01-19T10:11:25.647 回答