Безопасная остановка -websocket in rails on thin

У меня есть приложение 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.

7
задан MobileOverlord 30 April 2012 в 13:05
поделиться