私は、GPRSモジュールから作成されたソケットを扱うためのRubyサーバを実装しています。問題は、モジュールの電源が切れたときに、ソケットが閉じていることを示すものではありません。"ウォッチドッグ"付きRubyスレッド
同じサーバーで複数のソケットを処理するスレッドを実行しています。私は何を求めているのですか:スレッド内でタイマーを使用し、ソケットの入力ごとにリセットし、タイムアウトに達した場合はスレッドを閉じる方法がありますか?これについての詳しい情報はどこにありますか?
EDIT:コード例
require 'socket'
server = TCPServer.open(41000)
loop do
Thread.start(server.accept) do |client|
puts "Client connected"
begin
loop do
line = client.readline
open('log.txt', 'a') { |f|
f.puts line.strip
}
end
rescue
puts "Client disconnected"
end
end
end
を使用し、[eventmachine](https://github.com/eventmachine/eventmachine)!それは♥なので。 – omninonsense
この場合、イベントマシンのヘルプはどのように役立ちますか? –
あなたは本当に閉じたソケットを伝えることはできません。アプリケーションがソケットが閉じていることが通知されるまで数時間、数日、そして数か月かかることがあります。クライアント(GPRSモジュール)とサーバーの間でping-bongする必要があります。 – omninonsense