1

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

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

为此,Web 应用程序部分必须是可操作的(即 Rails 服务器,必须启动并运行)。

问题是在两种情况下您可能不希望控制台更新传播到客户端:

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

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

有没有办法从控制台或某种切换方法快速关闭消息传递?

4

1 回答 1

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。如果您正在尝试调试服务器问题,那么在修复该问题之前,上面的相同补丁将有所帮助。

于 2019-03-25T13:22:57.747 回答