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

Tob*_*ede 8 rack asynchronous ruby-on-rails eventmachine websocket

我创建了一个Rails 3异步版本,我想与WebSocket实现集成.

我正在使用EventMachine,Ruby 1.9,Fibers和各种em-flavored库,这些都是由邪恶的Ilya Grigorik记录的.

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

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

TL; DR

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

Dan*_*nox 5

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

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

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

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

对于任何反馈,我们都表示感谢.


Ber*_*cki 1

也许尝试袜子?就目前而言,它是最好的,并且很容易将其与Rails(2和3)集成