Есть ли способ отключить консольный обмен сообщениями от очереди сообщений Hyperstack?

В Hyperstack каждое изменение состояния входит в очередь сообщений через механизм веб-сокетов, чтобы информировать каждого клиента приложения об изменениях состояния модели / приложения. Поэтому, если вы обновляете модель из сеансов моего браузера, все остальные подключенные в то время могут видеть ее в своем сеансе (если есть необходимые разрешения).

Это даже делается из консольных "сессий". Вы изменяете модель из консоли Rails, и изменения автоматически распространяются на все подключенные веб-клиенты.

Для этого часть веб-приложения должна быть работоспособна (т. Е. Сервер rails должен быть запущен и работать).

Проблема в том, что есть две ситуации, когда вы не можете не обновлять консоль для распространения на клиенте:

  1. когда сервер rails не работает, по любой причине, и вы хотите взаимодействовать с приложением через его консоль (до тех пор, пока сервер rails снова не будет запущен)

  2. Вы хотите выполнять пакетные обновления с помощью консольных или рейковых задач, и вам не нужны накладные расходы на информирование клиентов.

Есть ли способ быстро отключить обмен сообщениями с консоли или какой-то другой метод переключения для этой цели?

1 ответ

Решение

Если сервер rails не работает, он не будет пытаться отправлять сообщения (однако см. Примечание в конце)

Но случай с граблями, которые вы хотите запустить, пока сервер работает, интересен. Я не думаю, что есть какой-либо опубликованный способ отключить "удаленный процесс -> сервер", но этот патч сделает то же самое:

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

Просто воткни это в грабли.

Относительно того, что сервер "не работает", один случай, который не работает, это если сервер на самом деле "работает", но просто никогда не отвечает. См. https://github.com/hyperstack-org/hyperstack/issues/144 для получения подробной информации. Если вы пытаетесь отладить проблему с сервером, то тот же патч, описанный выше, поможет, пока эта проблема не будет устранена

Другие вопросы по тегам