对连接要设立超时

前几天msn很糟,总是连不上,导致线程死掉了,这才想起要加上一个timeout,例:

  def self.set_online_xmpp_with_retry_login(j)
    begin
      Timeout::timeout(60) {
        p=Jabber::Presence.new(:chat)
        j.send(p)
        Robot.debug_log("set online for xmpp")
      }
    rescue => d
      Robot.exception_log("set online error:",d)
      begin
        Timeout::timeout(60) {
          connect_xmpp()
          Robot.debug_log("reconnected for xmpp")
        }
      rescue => detail
        Robot.exception_log("reconnect failed, please restart. error:",detail)
      end
    end
  end


加了两个Timeout,测试在线和重新连接。设60秒也差不多了。

机器人所有源码在: http://code.google.com/p/whereisitcn/

你可能感兴趣的:(Google,J#,Ruby)