ruby-on-rails - 连接管理器安装在 Rails 中的什么位置?

标签 ruby-on-rails ruby-on-rails-3 sockets daemon

我正在编写一个充当代理的 Rails 应用程序,因此特此称为代理。这个想法是,用户应该能够通过 Web UI 管理他的服务器,即使他的服务器关闭,该用户界面也始终启动并运行。

为了实现这一点,代理需要始终与服务器保持开放连接。为此,我使用 daemonz 创建了一个后台进程。接受来自服务器的传入连接并生成不断监听套接字的线程。

现在我有两个问题:我需要能够从我的 Rails Controller 在这些套接字上发送消息,并且我需要知道使用哪个套接字才能到达正确的服务器。我打算使用 ConnectionManager 类来为我处理这个问题,但我不知道这样的类适合 Rails 结构的位置,而且我不知道如何创建对象和两个进程都可用的套接字。

这提出了两个问题:

  1. 连接管理器属于哪里?
  2. 如何在进程之间共享连接管理器和套接字?

如果您只知道第一个问题的答案,请继续回答。我可能应该为我的第二个问题创建一个单独的帖子。

最佳答案

在 Rails/Ruby 中构建这似乎不是一个有用的东西。

可能更有用的是 Rails 管理应用程序,它在幕后配置了现有的负载均衡器/代理(例如 haproxy)。

您可以在 Rails 应用程序中拥有服务器/端口/配置的映射,然后将其投影到 haproxy 配置中并重新启动负载均衡器。一个很好的起点是 haproxy-tools gem ,它允许您解析/生成 haproxy 配置文件。

重写您自己的负载均衡器是没有意义的,即使您打算这样做,Ruby/Rails 也是一个糟糕的技术堆栈。

关于ruby-on-rails - 连接管理器安装在 Rails 中的什么位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7653085/

相关文章:

ruby-on-rails-3 - 使用 Rspec 和 Factory Girl 测试 before_save 回调

sockets - 通过 udp 套接字发送 float32 值

python - socket.recvmsg 忽略 ancbufsize、辅助数据

c# - 概念: Using WCF Service VS.套接字VS。

ruby-on-rails - Rails 3 回形针上传 : Save Uploaded Object Attachments Before Saving Object

ruby-on-rails - 为什么 will_paginate 不显示第一页之后的项目? (第 1 页之后为空)

ruby-on-rails - Mongoid 中的日期查询

ruby-on-rails - 安装 linecache ERROR : Failed to build gem native extension on 时在 Windows 机器上收到错误

ruby-on-rails - 如果在 Mechanize 的按钮名称中使用与号,我是否需要转义字符?

ruby-on-rails - 子域中的 Rails url 助手 - 删除子域