有没有一种方法可以将控制台消息与Hyperstack消息队列断开连接?

时间:2019-03-25 05:37:29

标签: ruby-on-rails ruby opalrb hyperstack

在Hyperstack中,每个状态更改都通过Websocket机制进入消息队列,以通知每个应用程序客户端模型/应用程序状态更改。因此,如果您从浏览器会话中更新模型,那么当时连接的其他所有人都可以在其会话中看到该模型(如果有必要的权限)。

这甚至可以通过控制台“会话”完成。您可以从Rails控制台更改模型,更改会自动传播到所有连接的Web客户端。

要做到这一点,Web应用程序部分必须可操作(即,rails服务器必须已启动并正在运行)。

问题在于,在两种情况下,您可能没有控制台更新来传播到客户端:

  1. 当Rails服务器由于任何原因无法运行并且您希望通过其控制台与应用程序进行交互(直到Rails服务器再次启动)

  2. 您想通过控制台或rake任务执行批处理更新,并且不希望使客户了解情况的开销。

是否有一种方法可以从控制台或某种切换方法快速打开消息传递?

1 个答案:

答案 0 :(得分:1)

如果Rails服务器没有启动,它将不会尝试发送消息(但是请参阅结尾处的注释)

但是,在服务器启动时要运行rake任务的情况很有趣。我认为没有任何已发布的方法可以关闭“远程进程->服务器”推送,但是此修补程序将实现相同的功能:

module Hyperstack 
  def self.send_to_server(*args) 
    # drop the message on the floor
  end
end

只需将其保留在rake任务中即可。

关于服务器“未启动”,一种不起作用的情况是服务器实际上“启动”,但根本没有响应。有关详情,请参见https://github.com/hyperstack-org/hyperstack/issues/144。如果您尝试调试服务器问题,则在解决该问题之前,上面的相同修补程序将有所帮助。