Ho un'app per i binari Sono in esecuzione su thin server per utilizzare il ciclo di esecuzione di EventMachine. Il problema è che mi piacerebbe essere in grado di includere em-websocket per elaborare le informazioni provenienti da un ws e fermarsi e avviare il websocket senza interrompere il ciclo di esecuzione EM. Questo è come sto avviando il websocket.Arresto sicuro di em-websocket nelle guide sottili
EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 8080) do |ws|
ws.onopen { }
ws.onclose { }
ws.onmessage { |msg| }
end
Il problema è nel codice di avvio/arresto. Dalla documentazione di em-websocket
#Start WebSocket
def self.start(options, &blk)
EM.epoll
EM.run do
trap("TERM") { stop }
trap("INT") { stop }
EventMachine::start_server(options[:host], options[:port],
EventMachine::WebSocket::Connection, options) do |c|
blk.call(c)
end
end
end
#Stop WebSocket
def self.stop
puts "Terminating WebSocket Server"
EventMachine.stop
end
Il problema è che il codice em-websocket interno non tiene la firma proveniente da EM: START_SERVER per essere in grado di chiamare EventMachine :: STOP_SERVER (firma) per spegnerlo. Esiste un modo per sovrascrivere queste funzioni senza modificare em-websocket in modo da poter avviare/arrestare in modo sicuro queste web socket? Mi piacerebbe se si comportasse più come il server Eventmachine standard.
Questo è quello che ho finito per fare. – MobileOverlord