Comment puis-je faire persistante des sockets réseau sous Unix en Ruby?
Question
J'aimerais être capable d'écrire un rubis programme qui peut redémarrer sans abandonner c'est les connexions socket.
La solution
Ce programme obtient Google en page d'accueil et puis quand vous le passez SIG_INT via ctrl-c, elle redémarre le programme et lit la sortie de la page d'accueil de la socket ouvert avec Google.
#!/usr/bin/ruby
#simple_connector.rb
require 'socket'
puts "Started."
if ARGV[0] == "restart"
sock = IO.open(ARGV[1].to_i)
puts sock.read
exit
else
sock = TCPSocket.new('google.com', 80)
sock.write("GET /\n")
end
Signal.trap("INT") do
puts "Restarting..."
exec("ruby simple_connector.rb restart #{sock.fileno}")
end
while true
sleep 1
end
Autres conseils
Vous parlez des sockets réseau, pas les sockets UNIX, je suppose?
Je ne suis pas sûr que cela convient à vos besoins, mais la façon dont je voudrais faire c'est en séparant le travail en réseau et la partie logique, et ne redémarre la partie logique, puis rebranchez-la partie logique de la mise en réseau de la partie.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow