Есть ли способ отключить консольный обмен сообщениями от очереди сообщений Hyperstack?
В Hyperstack каждое изменение состояния входит в очередь сообщений через механизм веб-сокетов, чтобы информировать каждого клиента приложения об изменениях состояния модели / приложения. Поэтому, если вы обновляете модель из сеансов моего браузера, все остальные подключенные в то время могут видеть ее в своем сеансе (если есть необходимые разрешения).
Это даже делается из консольных "сессий". Вы изменяете модель из консоли Rails, и изменения автоматически распространяются на все подключенные веб-клиенты.
Для этого часть веб-приложения должна быть работоспособна (т. Е. Сервер rails должен быть запущен и работать).
Проблема в том, что есть две ситуации, когда вы не можете не обновлять консоль для распространения на клиенте:
когда сервер rails не работает, по любой причине, и вы хотите взаимодействовать с приложением через его консоль (до тех пор, пока сервер rails снова не будет запущен)
Вы хотите выполнять пакетные обновления с помощью консольных или рейковых задач, и вам не нужны накладные расходы на информирование клиентов.
Есть ли способ быстро отключить обмен сообщениями с консоли или какой-то другой метод переключения для этой цели?
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 для получения подробной информации. Если вы пытаетесь отладить проблему с сервером, то тот же патч, описанный выше, поможет, пока эта проблема не будет устранена