4

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

但是,我们不确定如何让 Rails 与 websocket 对话。我们找到了 Reel,它似乎可以很容易地在独立环境中接受 websocket 请求。Reel 看起来很棒,因为无论如何我们都希望在赛璐珞堆栈之上实现 DDP。但是在 Rails 环境中运行 Reel 呢?我们需要“rails runner”吗?我们希望继续使用现有的控制器来分派传入的请求(例如,添加/更改/删除资源)。如果没有通过 Rack 的请求,这是否可能?

任何输入表示赞赏。

4

2 回答 2

4

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

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

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

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

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

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

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

于 2015-03-04T21:41:03.127 回答
2

这也是我一直渴望做的事情,集成旧的“遗留”Rails 代码。这是我发现的最好方法:

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

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

于 2014-05-14T00:15:45.960 回答