在Ruby on Rails中实现实时功能的最佳方法

时间:2015-05-10 15:04:22

标签: ruby-on-rails ruby

最近,我一直在寻找实现实时更新网页的解决方案,例如,类似Twitter的新闻提要或实时聊天。我发现了一些方法,如Pusher服务,faye和相当多的ruby宝石,如private_pub或sync。

问题是这个解决方案似乎不是一个完全正确的方法。 Pusher相当昂贵,实际上我不喜欢在我的项目中使用其他服务。 Faye似乎不安全,而且实现安全性非常困难。 Private_pub是正确的,但最后一次在github上的提交是在2013年,事实上它已经过时了。

总而言之,我发现的方式似乎并不是Rails创业公司的专业级解决方案。我是否应该完全切换到NodeJS或其他技术,或者我可以将NodeJS应用程序集成到Rails中?

总结一下,Rails框架是否有这样的解决方案,或者切换到另一种技术是不可避免的?

2 个答案:

答案 0 :(得分:2)

它现在可能没有帮助,但是在上个月的RailsConf中,DHH宣布Rails 5将通过名为ActionCable的新库添加对websockets的支持。

https://www.youtube.com/watch?v=oMlX9i9Icno

答案 1 :(得分:0)

MessageBus可能非常合适。它目前在Discourse中用于实施实时更新。

我也不确定你对Faye的安全问题究竟是什么。如果所有内容都通过适当的CORS设置在HTTPS上运行,则应该没有问题。

对于混合Node / Rails解决方案,您可以将Rails应用程序中的更新列表(例如,要通知的帖子和列表)推送到Redis实例。订阅Redis的Node应用程序然后可以通知客户端向Rails服务器发出请求以获取最新更新。