Есть ли способ отключить консольный обмен сообщениями от очереди сообщений Hyperstack? - PullRequest
1 голос
/ 25 марта 2019

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

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

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

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

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

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

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

1 Ответ

1 голос
/ 25 марта 2019

Если сервер 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. Если вы пытаетесь отладить проблему с сервером, то тот же патч, описанный выше, поможет, пока эта проблема не будет устранена.

...