使用Rack和Event Machine将WebSockets与Rails集成

时间:2010-11-22 10:44:56

标签: ruby-on-rails asynchronous websocket rack eventmachine

我创建了一个Asynchronous version of Rails 3,我想与WebSocket实现集成。

我正在使用EventMachine,Ruby 1.9,Fibers以及邪恶善良Ilya Grigorik所记录的各种em-flavored库。

我一直在寻找em-websocket作为WebSocket连接的处理程序,但不确定将其连接到Rails应用程序的最佳方法。

理想情况下,这将以类似于具有Express和Socket.io的node.js的方式工作。应检测传入连接并将其分派到WebSocket处理程序或常规rails堆栈,如HTTP标头和&等

TL; DR

  • 插入现有Rails应用程序的WebSocket处理程序
  • 透明地将传入的WebSocket请求分发到应用程序中的端点

3 个答案:

答案 0 :(得分:5)

我知道这个问题已经过时了,但希望这个答案可以帮助那些来自谷歌的人。

我正在开发一个满足原始问题中两个主要标准的宝石。这个gem被称为websocket-rails,它是从头开始开发的,使得在Rails应用程序中使用WebSockets简单易行。它最终处于稳定版本,但我认为它还需要更多功能。

目前,事件处理非常基础。有一个events.rb文件,您可以将客户端事件映射到类似于routes.rb文件的控制器操作。对/websocket的所有请求都将传递到嵌入式WebSocket服务器,而无需单独的服务器进程。

该项目更加雄心勃勃的目标是最终将Rails转移到更传统的MVC模式,客户端浏览器上的事件冒泡到服务器进行处理和更新模型将自动触发客户端上的事件以更新呈现的表示该模型。

任何反馈都将不胜感激。

答案 1 :(得分:2)

查看Skinny

您需要使用Thin,但您可以在中途升级HTTP请求。我在Sinatra应用程序中使用它,但它应该在Rails中使用它。

答案 2 :(得分:1)

也许试试socky?至于现在它是最好的,并且很容易将它与Rails(2和3)集成