我有以下sinatra代码,我如何做同等的但是对于rails应用程序?特别是,想在反应器循环内部启动带有薄的轨道,同时也在那里使用websocket服务器。
require 'bundler'
Bundler.require
class App < Sinatra::Base
get '/' do
slim :index
end
end
EM.run do
EM::WebSocket.start(:host => '0.0.0.0', :port => 3001) do |ws|
# websocket stuff goes here
end
# start sinatra in a thin server instance here (but i want to start a rails app instead)
Thin::Server.start App, '0.0.0.0', 3000
end
答案 0 :(得分:1)
我设置了一个初始化程序,如config / initializers / websocket.rb:
EM.next_tick do
EM::WebSocket.start(:host => '0.0.0.0', :port => 3001) do |ws|
# websocket stuff goes here
end
end
此外,将gem 'thin'
添加到Gemfile并使用$ rails s
启动服务器。当EM反应器启动时,将调用排队的next_tick块并且websocket服务器开始运行。
您也可以将websocket代码放在lib /中的某个文件中,然后通过初始化程序启动它,可能更干净。