我应该使用啥将 Rails 应用程序与远程服务器连接?

Posted

技术标签:

【中文标题】我应该使用啥将 Rails 应用程序与远程服务器连接?【英文标题】:What should I use to connect a rails app with remote servers?我应该使用什么将 Rails 应用程序与远程服务器连接? 【发布时间】:2020-02-01 19:39:51 【问题描述】:

我正在使用 ruby​​ on rails 应用程序,其目标是处理用户预订储物柜并能够使用智能手机解锁它们。

rails 应用托管在 heroku(免费计划)上,我使用几个树莓派作为远程服务器来控制储物柜的打开。

到目前为止,它通过免费的 http ngrok 隧道处理从应用程序到树莓的 HTTP 请求,但这仅限于每分钟几个请求,并且连接根本不安全/私密,所以它不是真的是我需要的。

您会推荐哪种类型的解决方案来确保应用程序和远程服务器之间的连接更加安全,并且没有请求数限制?我有一些概念,但我对它们的理解还不够好,无法知道我应该研究什么。虚拟专用网? SSH?网络套接字?我还应该使用heroku吗?

非常感谢大家!

【问题讨论】:

【参考方案1】:

您可以使用上面列出的所有技术实现您想要的,但我认为使用 Web 套接字会简化设置过程,而且它似乎也是最强大的。

看看这个client 为您的覆盆子。

要让服务器正常工作,您需要一个 redis 实例,heroku 在其免费计划中提供了该实例,以便您可以将其保留在那里。您的服务器应用程序需要使用 ActiveCable 或 faye 之类的东西。

【讨论】:

谢谢卡米尔,我已经开始研究 websockets。我想我可以使用 ActionCable 在 rails 应用程序中设置服务器端。在客户端,我可能必须使用 python 客户端(直到现在我都使用 tornado 作为 http 服务器),它可以轻松连接到 action cable 设置的 ws 频道吗? 我确定有一个用于 python 的 websockets 客户端库。

以上是关于我应该使用啥将 Rails 应用程序与远程服务器连接?的主要内容,如果未能解决你的问题,请参考以下文章

Errno::ENOTTY 通过 SuSe 上的 Net::SSH 连接到远程服务器时设备的 ioctl 不合适(使用 Ruby on Rails 5.2.4)

将远程 Postgresql 与 AWS for Rails 应用程序一起使用

Rails Ubuntu / passenger / capistrano应用程序资产未部署

Rails 5 API - 即使无法建立与数据库的连接,也加载静态页面

Android 连接到远程 mysql 数据库 JDBC Vs JSON

将 Rails 连接到 AWS MySQL 数据库