实时触发来自 Rails 的主干事件

Triggering backbone events from Rails in real time

本文关键字:事件 Rails 实时      更新时间:2023-09-26

我正在使用RoR,Backbone,并且我有一个使用sidekiq的服务器端功能,所以我的Redis数据库实时更新。当 sidekiq 确实更改数据库属性时,我需要触发我的主干事件。Sidekiq 函数位于 app/assets/workers 目录中。所以基本上我需要从 Rails/app/assets/workers/worker.rb 实时触发我的 Backbone 集合在 app/assets/javascripts/backbone/models/monster.js.coffee 上。当 sidekiq 实时更新数据库中的属性时,对于 Backbone,一切都是无声的,我的集合不会实时更改。如果我刷新页面,它会更新。如何从Rails应用程序实时触发骨干事件?我是否需要使用另一个框架,或者它可以简单地在 rails 中做到这一点?

此功能不是由开箱即用的 Rails 提供的,因此您需要一个自定义解决方案。我建议看看Faye,这是一个发布/订阅消息传递系统,可以通过Faye gem轻松与Rails集成。

要完成您想要的操作,您需要按照文档设置 Faye 服务器。在浏览器中,您需要按照此处所述创建客户端。使用浏览器客户端,您可以订阅和收听频道上的消息。在后端,当您的 Sidekiq 工作人员完成并更新相关数据时,您可以在 Faye 频道上发布消息。在浏览器客户端中收到消息后,您可以对它执行任何操作,包括触发 Backbone 集合上的事件。希望这有帮助。