gpt4 book ai didi

ruby-on-rails - 在云环境 (heroku) 上的 ruby​​ on rails 中启动套接字服务器

转载 作者:行者123 更新时间:2023-12-04 06:31:00 25 4
gpt4 key购买 nike

我正在使用 heroku,我可以很好地推送 Ruby on Rails 应用程序,我正在尝试将其转换为 Socket 服务器,基本上我需要绑定(bind)到一个开放端口,在这种情况下,我知道Heroku 只做 80 22 和 443。

是否可以在这些环境中绑定(bind)到端口 80?

此外,我将如何设置此套接字服务器的入口点,我所知道的是当脚本/服务器启动应用程序时。

我必须把函数调用放在那里吗?如何在 heroku 拥有的任何网络服务器之上启动套接字服务器而不是 rails 应用程序。

最佳答案

目前无法将非 HTTP 流量路由到您的应用。 Heroku 在后台将 Ruby Web 服务器绑定(bind)到各种端口和主机,然后根据 HTTP header 中的主机将流量路由到这些进程。假设持续时间超过 30 秒的请求被挂起并终止。

从设计的角度来看,长时间运行的查询会带来严重的性能问题。使用单个 dyno,任何持续 30 秒(甚至 2 秒)的请求都会阻止任何其他用户在整个持续时间内访问您的站点。相反,更高性能的设计是在基本状态下快速提供页面,并使用工作线程在后台处理内容,同时通过 javascript 提取结果。这可以简单地使用现代网络开发工具来完成。

如果你有一个长时间运行的进程,你不需要通过套接字与之通信,你可以简单地使用一个 worker 。我建议使用像 MongoDB 这样的工具来存储计算结果,并推荐像 Delayed::Job 这样的库来进行排队。

综上所述,肯定有合理的用例需要更长的运行进程和非 HTTP 流量,但目前 Heroku 不支持它们。

关于ruby-on-rails - 在云环境 (heroku) 上的 ruby​​ on rails 中启动套接字服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2770203/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com