У меня есть приложение rails, которое я запускаю на тонком сервере, чтобы использовать цикл выполнения EventMachine. Проблема в том, что я хотел бы иметь возможность включать веб-сокет em -для обработки информации, поступающей от ws, а также останавливать и запускать веб-сокет, не останавливая цикл запуска EM. Вот как я запускаю веб-сокет.
EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 8080) do |ws|
ws.onopen { }
ws.onclose { }
ws.onmessage { |msg| }
end
Проблема в коде запуска/остановки. Из документации веб-сокета em -
#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
. Проблема заключается в том, что внутренний код веб-сокета em -не отслеживает подпись, поступающую от сервера EM :start _, чтобы иметь возможность вызывать EventMachine ::stop _. ] сервер (подпись ), чтобы закрыть его. Есть ли способ переопределить эти функции без изменения веб-сокета em -, чтобы я мог безопасно запускать/останавливать эти веб-сокеты? Я бы хотел, чтобы он работал как стандартный сервер Eventmachine.