ruby-on-rails - 你如何生成一个 EventMachine "inside"一个 Rails 应用程序?

标签 ruby-on-rails ruby ruby-on-rails-3 websocket eventmachine

我有一个 Rails 应用程序,我希望为其添加某种 WebSocket 支持。从各种谷歌搜索来看,最好的基于 Ruby 的 WebSocket 解决方案似乎是 em-websocket在 EventMachine 上运行。

我想知道是否有办法将 EventMachine react 器“集成”到 Rails 中?我在哪里放置初始化代码?这是完成此任务的正确方法吗?

我看过 this返回 Sinatra 执行 EventMachine GET 请求的示例,但这并不是我想要的。

感谢任何帮助。

最佳答案

您不能在 Rails 本身内部运行 Eventmachine 引擎,因为它是一个持久的运行循环,会永久阻塞您的 Rails 进程之一。通常要做的是有一个使用 Eventmachine 的副进程,Rails 通过套接字与其通信以发送通知。

Juggernaut作为这种事情的一个例子,它实现了一个 Websocket 客户端和一个 Rails 钩子(Hook)来向它发送通知。该项目后来弃用了 Ruby 版本,转而使用 JavaScript Node.js 版本,但这仍然是一个非常详尽的示例,说明了如何使用 Eventmachine。

关于ruby-on-rails - 你如何生成一个 EventMachine "inside"一个 Rails 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5799406/

相关文章:

ruby-on-rails - Rails 播种 boolean 值不起作用

ruby-on-rails - Rails Assets 管道 : How to prevent caching of a specific asset

ruby-on-rails - 自引用 has_many 通过 Rails

ruby-on-rails - 模块的 Rails 未定义方法

ruby - 更多 ruby​​ 项目 euler #2 的方式

ruby - 如何在 vim 中启用 ruby​​ 方法可视化

ruby-on-rails - 枯燥Rails Active Record查询条件

ruby-on-rails - Rails - 如何在代码中检查开发者模式或生产模式

mysql - 使用 mysql2 db 在本地主机上部署时出现语法错误、意外的 keywords_end 错误

ruby-on-rails - Rails 格式化日期