如果我想将使用 socket.io 的节点应用程序转换为 Ruby on Rails 应用程序,有哪些替换 socket.io 的选项?(本质上是在为 Ruby 寻找一个套接字服务器)
计划翻译以下应用程序: http ://www.tokbox.com/blog/creating-chat-roulette-with-node-js-socket-io-and-opentok/
如果我想将使用 socket.io 的节点应用程序转换为 Ruby on Rails 应用程序,有哪些替换 socket.io 的选项?(本质上是在为 Ruby 寻找一个套接字服务器)
计划翻译以下应用程序: http ://www.tokbox.com/blog/creating-chat-roulette-with-node-js-socket-io-and-opentok/
我推荐Faye Ruby 实现作为可靠的服务器端实时组件。它不是 socket.io 的直接端口,而是为您提供实时基础设施和一些定义良好的消息传递概念,这些概念将帮助您移植大多数实时应用程序。
您可以通过实时网络技术指南找到更多选项。
你看过Plezi 框架吗?
您可以将其用作单独的框架,也可以通过添加 websocket 功能来增强 Rails/Sinatra。
它使用Iodine服务器运行,并支持原生 websockets、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 的那一刻启动。
我强烈推荐Pubnub,它有很多包装器,包括 ruby。
文档非常容易理解,并且有很多教程。
我在许多 Rails 项目中使用过 Pubnub,包括树莓派项目。
Rails 5 现在内置了 ActionCable,这意味着 websockets 现在是 Rails 的标准配置!