如何使用Rails作为DDP服务器与Meteor.js客户端

时间:2014-04-13 08:08:30

标签: ruby-on-rails websocket meteor celluloid ddp

我们有一个仅支持HTTP API的Rails应用程序。在客户端,目前使用Ember.js。我们对Ember并没有给人留下太深刻的印象,并且非常喜欢Meteor.js采用的方法。因此,我们希望将客户端与Meteor.js交换,并通过使用数据分发协议(DDP)的websockets与Rails服务器进行通信,这样我们就可以继续使用Rails中的模型,邮件程序和控制器。实现DDP的服务器端应该很容易。

但是,我们不确定如何制作Rails talk websockets。我们找到了Reel,它似乎可以在独立环境中轻松接受websocket请求。 Reel似乎很棒,因为我们想在Celluloid堆栈上实现DDP。但是在Rails环境中运行Reel呢?我们需要“轨道跑步者”吗?我们希望继续使用现有的控制器来分派传入的请求(比如添加/更改/删除资源)。如果没有通过Rack发出请求,这是否可能?

赞赏任何意见。

2 个答案:

答案 0 :(得分:4)

有点晚了,但是我已经在Ruby中实现了DDP,你可以在这里查看:

https://github.com/d-snp/ruby-ddp-server

它还包括EJSON的实现。它建立在赛璐珞 - websocket之上,可以简单地作为机架应用程序运行。

我已经与RethinkDB集成,可以用作构建自己的集合实现的参考。

https://github.com/d-snp/ruby-ddp-server-rethinkdb

我还制作了一个示例聊天应用程序,可以在这里找到:

https://github.com/d-snp/celluloid-rethinkdb-chat

答案 1 :(得分:2)

这也是我一直渴望做的事情,以整合旧的“遗留”Rails代码。这是我找到的最佳方式:

由于您不会使用任何Rails路由器/控制器/视图,而只是能够读取数据并将其推送到客户端,我建议您使用Rails为数据库创建JSON apis,并部署代码,然后在Meteor中你可以通过http包消费数据,这会在服务器上定期发生,并用你需要的规范化数据填充MongoDB,然后它将为浏览器客户端服务。

我正在开发这样一个应用程序,它将在Mongo中保存数据的规范化版本,并在mySql中保存数据的关系版本(通过Rails),这样我就可以保留我不想重写的旧Rails功能在JS,并获得Meteor的好处,我最需要的一页。