6

サーバーに接続されているrubytcpsocketクライアントがあります。

データを送信する前に、ソケットが接続されているかどうかを確認するにはどうすればよいですか?

切断されたtcpsocketを「レスキュー」し、再接続してから再送信しようとしますか?もしそうなら、どこから始めればいいのかわからないので、誰かが簡単なコードサンプルを持っていますか:(

私は、永続的に接続されたクライアントtcpsocketをRailsで取得できたことを非常に誇りに思っています。その後、サーバーはクライアントを強制終了することを決定し、すべてが崩壊しました;)

編集

私はこのコードを使用していくつかの問題を回避しました-接続されていない場合は再接続を試みますが、サーバーがダウンしている場合はケースを処理しません(再試行を続けます)。これは正しいアプローチの始まりですか?ありがとう

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

1 に答える 1

1

これらのタイプのシナリオで私が通常行うことは、変数内の連続した再試行を追跡し、再試行の屋根を設定する他の変数を使用することです。屋根にぶつかったら、ネットワークまたはサーバーに問題があることを示すある種の例外をスローします。もちろん、成功したら再試行回数変数をリセットすることをお勧めします。

于 2014-10-11T02:26:50.873 に答える