重新连接tcpsocket(或如何检测关闭的套接字)

时间:2012-09-28 18:32:08

标签: ruby ruby-on-rails-3

我有一个连接到服务器的ruby tcpsocket客户端。

如何在发送数据之前检查套接字是否已连接?

我是否尝试“解救”断开的tcpsocket,重新连接然后重新发送?如果是这样,有没有人有一个简单的代码示例,因为我不知道从哪里开始:(

我很自豪我设法在rails中获得持久连接的客户端tcpsocket。然后服务器决定杀死客户端,这一切都崩溃了;)

修改

我已经使用这段代码来解决一些问题 - 如果没有连接它将尝试重新连接,但如果服务器关闭(它将继续重试)将无法处理。这是正确方法的开始吗?感谢

def self.write(data)
  begin
    @@my_connection.write(data)
  rescue Exception => e  
    @@my_connection = TCPSocket.new 'localhost', 8192
    retry
  end
end

1 个答案:

答案 0 :(得分:1)

我在这些类型的场景中通常做的是跟踪变量中的连续重试,并设置一些其他变量来设置重试屋顶。一旦我们到达屋顶,抛出某种类型的异常,表明存在网络或服务器问题。您当然希望在成功时重置重试计数变量。