私は薄いサーバー上で実行しているレールアプリを持っています。これはEventMachineの実行ループを利用しています。問題は、wsから入ってきた情報を処理するem-websocketを含めることができ、EM実行ループを停止せずにwebsocketを停止して開始できるようにすることです。これが私がwebsocketを開始する方法です。薄いレールで安全にem-websocketを停止する
EventMachine::WebSocket.start(:host => "0.0.0.0", :port => 8080) do |ws|
ws.onopen { }
ws.onclose { }
ws.onmessage { |msg| }
end
問題は開始/停止コードにあります。 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
から問題は内部全角のWebSocketコードということであるEMからの署名を追跡することはありません:START_SERVERはそれをシャットダウンするEventMachine :: STOP_SERVER(署名)を呼び出すことができるように。 em-websocketを変更せずにこれらの機能を無効にする方法がありますので、これらのWebソケットを安全に起動/停止できますか?私はそれがstandart Eventmachineサーバーのようにもっと機能したら欲しいです。
これは私がやったことです。 – MobileOverlord