我正在實現一個ruby服務器來處理由GPRS模塊創建的套接字。事情是,當模塊掉電時,沒有跡象表明套接字已關閉。具有「看門狗」的Ruby線程
我做的線程來處理多個插座與在同一臺服務器。我問的是這樣的:有沒有辦法在一個線程中使用一個定時器,在每個套接字輸入後重置它,並且如果它超時,關閉線程?我在哪裏可以找到關於此的更多信息?
編輯:代碼示例不檢測插座關閉
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 2012-04-06 06:31:43
事件機器在這種情況下如何提供幫助? – 2012-04-06 22:51:58
你不能真正告訴套接字關閉。它可能需要幾個小時,幾天甚至幾個月,直到應用程序發現套接字關閉。您需要在客戶端(GPRS模塊)和您的服務器之間進行ping通。 – omninonsense 2012-05-18 21:47:50