【问题标题】:What is the Ruby equivalent of Node.js' socket.io?Node.js 的 socket.io 的 Ruby 等价物是什么?
【发布时间】:2013-08-11 14:45:10
【问题描述】:

如果我想将使用 socket.io 的节点应用程序转换为 Ruby on Rails 应用程序,有哪些替代 socket.io 的选项? (本质上是在为 Ruby 寻找一个套接字服务器)

http://socket.io/

计划翻译以下应用程序: http://www.tokbox.com/blog/creating-chat-roulette-with-node-js-socket-io-and-opentok/

【问题讨论】:

  • 您实际上可以在 Rails 服务器上安装 Node.JS,并使用 Socket.io(Node.JS 擅长处理 websockets)
  • @MrYoshiji 我怀疑有办法做到这一点,您介意详细说明吗?我假设可以以某种方式在服务器之间传递数据……XML?JSON?但我不确定如何

标签: ruby-on-rails node.js rubygems websocket socket.io


【解决方案1】:

我推荐Faye Ruby implementation 作为可靠的服务器端实时组件。它不是 socket.io 的直接端口,而是为您提供实时基础架构和一些定义明确的消息传递概念,这些概念将帮助您移植大多数实时应用程序。

您可以通过realtime web tech guide找到更多选项。

【讨论】:

  • 很遗憾我不熟悉抽筋。
【解决方案2】:

你看过Plezi framework吗?

您可以将其用作单独的框架或augment Rails/Sinatra by adding websocket functionality

它使用Iodine 服务器运行,并支持本机 websocket、RESTful 路由和 HTTP 流,因此很容易有一个后备位置,例如长拉,就像 socket.io 在 web 套接字不工作时所做的那样。

它很有趣且易于开发,并且对 Redis 具有原生支持,因此它允许在进程和机器之间进行 websocket 广播......虽然它仍在开发中,但它充满了潜力。

广播/回显 WebSocket 应用程序可能如下所示:

require 'plezi'

class Echo

  def index
    "this is an echo server - use websockets to connect. test with: https://www.websocket.org/echo.html"
  end

  def on_message data
    _echo data
    broadcast :_echo, data
  end

  def _echo data
    response << data
  end
end

Plezi.route '/', Echo

您实际上可以将代码放入 irb 控制台,服务器将在您使用 exit 命令退出 irb 的那一刻启动。

【讨论】:

    【解决方案3】:

    我强烈推荐Pubnub,它有很多包装器,包括ruby。

    文档非常容易理解,并且有很多教程。

    我在许多 Rails 项目中使用过 Pubnub,包括树莓派项目。

    Rails 5 现在内置了 ActionCable,这意味着 websockets 现在是 Rails 的标准配置!

    【讨论】:

    • PubNub 现在对于网络工作来说是非常昂贵的。如果您每天获得的唯一身份少于 100 个,那么您可以使用免费计划,但如果再过一遍,您就会以 149 美元/月 的价格升级到他们的最低计划。超出该计划,您将获得 399 美元/月。这与一年前的计划不同,当时他们的计划是每月只需 15 美元。
    • 这没有回答问题。 OP 正在寻求在 ruby​​ 中构建一个 socket.io 服务器,而不是将聊天外包给 PaaS。
    猜你喜欢
    • 1970-01-01
    • 2011-03-16
    • 1970-01-01
    • 1970-01-01
    • 2013-11-14
    • 2010-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多