Mik*_*cic 20 ruby ruby-on-rails eventmachine websocket ruby-on-rails-3
我有一个Rails应用程序,我希望为它添加某种WebSocket支持.从各种Google搜索,似乎最好的基于Ruby的WebSocket解决方案是在EventMachine上运行的em-websocket.
我想知道是否有办法将EventMachine反应器"集成"到Rails中?我在哪里放置初始化代码?这是实现这个目标的正确方法吗?
我已经看到这个回到Sinatra的例子来做一个EventMachine GET请求,但这并不是我想要的.
任何帮助表示赞赏.
你不能在Rails本身内部运行Eventmachine引擎,因为它是一个永久阻止你的Rails进程的持久运行循环.通常做的是有一个使用Eventmachine的边进程,Rails通过套接字与它通信以发送通知.
Juggernaut就是这种事情的一个例子,它实现了一个Websocket客户端和一个Rails钩子来向它发送通知.该项目已经弃用了Ruby版本,转而支持JavaScript Node.js版本,但这仍然是如何使用Eventmachine的一个非常全面的例子.
小智 6
如果您在瘦服务器(bundle exec thin start)中运行rails应用程序,瘦服务器会为您运行EventMachine,然后您的rails应用程序可以在您需要的任何地方执行EM代码.
举例:
具有该代码的库o初始化程序:
EM.next_tick do
EM.add_periodic_timer(20) do
puts 'from Event Machine in rails code'
end
end
Run Code Online (Sandbox Code Playgroud)
不阻止rails进程应用程序.
我尝试使用电磁同步来启动光纤中的反应器。在 Rails 应用程序中,您可能可以在初始化程序中启动它,因为听起来您只想让反应器运行以响应 Websocket 请求。正如其他答案所建议的,我认为您想要与您的反应器建立套接字通信,或者使用异步客户端之一来连接您的反应器和 Rails 代码都可以读取和写入以交换数据的数据存储。
我的一些同事整理了一些在 ruby 代码中按需启动 EM 反应器的示例,以便在 EventMachine 中运行测试。我会尝试用它作为一个可能的例子;使用 eventmachine 进行收集和测试
| 归档时间: |
|
| 查看次数: |
7967 次 |
| 最近记录: |