0

我的 webapp 包含一个 HTTP 服务器和一个 WebSocket 服务器,它们都在 Rails 上运行。对于 Websockets,我使用的是在初始化程序中启动的 em-websocket,如下所示:

Thread.new do
  EventMachine.run do
    EventMachine::WebSocket.run(EVENTCHAT_CONFIG) do |socket|
        [...]
    end
  end
end if Rails.const_defined?(:Server)

当我使用“rails s”启动服务器时,这可以正常工作,但它在分离模式下(“rails s -d”)不起作用。当我尝试通过 JS 连接到 Websocket 服务器时,它告诉我,它仍处于连接状态,所以我猜有什么东西阻止了它。我也认为这可能与线程有关。

我也尝试用瘦和独角兽启动服务器,但都无法启动 Websocket 服务器。

我在这里违反惯例吗?

4

1 回答 1

0

我刚刚切换到foreman,这使我能够使用一个命令启动多个 ruby​​ 进程。你只需要添加一个Procfile。对于部署,您可以将其导出到各种初始化系统,例如在我的情况下upstart

它还对我不起作用,尽管我确实认为这是要走的路。

于 2014-08-06T01:22:18.563 回答