4

我正在使用 EventMachine 构建一个程序,有时网络较弱的客户端会在我们的程序中触发解除绑定。我想知道如何确定解除绑定功能被触发的原因,以及我是否可以做些什么来帮助这些弱客户。

4

2 回答 2

1

当连接由于某种原因终止时会调用 Unbind,通常需要重新连接到服务器。

class MyConnection < EM::Connection
  def initialize(host, port)
    @host, @port = host, port
    @retry = 0
  end

  def self.connect(host, port, timeout)
    EM.connect(host, port, self, host, port)
  end

  def connection_completed
    @retry = 0
  end

  def unbind
    if @retry < 3
      EM.add_timer(1){ @retry +=1 && reconnect(@host, @port) }
    else
      fail "Can't reconnect"
    end
  end
end
于 2013-06-26T21:48:08.673 回答
0

看来您还可以使用“原因”参数定义取消绑定:

def unbind(reason=nil)
end

参考:

https://groups.google.com/forum/#!topic/eventmachine/9HFuXS15HYg https://github.com/eventmachine/eventmachine/issues/362

于 2013-06-26T22:51:02.647 回答