ruby-on-rails - 具有实时通知架构的 Rails

标签 ruby-on-rails sockets websocket actioncable

我需要向我的 Rails 应用程序添加实时通知。以下是我发现的不同可能的架构。

1. Rails + Socket.io + Redis:正如本文 post 中所建议的,具有以下架构:

Rails + Socket.io + Redis

  • : Clean,如果 Socket.io 宕机,不会丢失任何数据
  • : 介绍几项技术(加强可维护性)

  • 2. Rails + Socket.io:使 Rails 成为 Socket.io 客户端,就像这个 repo 所做的那样:https://github.com/lyondhill/socket.io-ruby-client

    Rails + Socket.io
  • : 直白
  • : 依赖一个冷门库

  • 3. Ruby Faye:http://faye.jcoglan.com/ruby.html
  • : 100% ruby
  • :由于需要外部应用程序,Socket.io 现在比 Faye 更像是一个行业标准。

  • 4. ActionController::Live:http://edgeapi.rubyonrails.org/classes/ActionController/Live.html
  • : Rails in app way
  • : 太不成熟

  • 问题:
  • 现在有没有标准的方法(我会错过)来做到这一点?
  • 关于我的比较的任何想法(希望这不会被关闭)?
  • 最佳答案

    看看 eventmachine 和 websockets。还有一些第三方服务,例如 Pusher 和 PubNub,它们将通过 HTTP API 为您处理 websocket 部分。

    https://github.com/igrigorik/em-websocket

    Rails 5 还将添加 ActionCable,它可以在 Rails 中完成此操作,但尚未发布。

    我会说这些方法的优点是您不需要单独的 node.js 应用程序。这些服务非常易于使用,但不是免费的。

    关于ruby-on-rails - 具有实时通知架构的 Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32248179/

    相关文章:

    ruby-on-rails - 我如何让队友从他的机器上重启heroku服务器

    javascript - 使用 Tor 网络执行 JavaScript,无需人工交互

    android - Ubuntu 中的 C/C++ 套接字,用于从 Android 麦克风输入接收音频流

    python - Django Channels websocket 通信不是真正的异步?

    python - 如何强制 Tornado websockets 在握手时生成错误页面

    node.js - 无法访问 socket.io

    ruby-on-rails - 使用 cookie 制作 Ruby Net::HTTP::Get 请求

    ruby-on-rails - 将 Redcarpet 与 rails 4 一起使用

    ruby-on-rails - Rails 和 Azure VM : where to set environment variables (mailer)

    python - 套接字无法发送数据