0

我有以下 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
4

1 回答 1

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 reactor 启动时,队列中的 next_tick 块将被调用并且 websocket 服务器开始运行。

您还可以将 websocket 代码放在 lib/ 中的某个文件中并通过初始化程序启动它,这可能会更干净。

于 2013-04-26T12:54:00.143 回答