Шина сообщений игнорирует настройку DISCOURSE_LONG_POLLING_BASE_URL и всегда использует "/"

Описание проблемы

Недавно я настраивал новый сервис CDN и конфигурировал DISCOURSE_LONG_POLLING_BASE_URL в app.yml, чтобы отделить службу длинного опроса от исходного сервера.

Однако message bus продолжает делать запросы к “/”, игнорируя настроенный базовый URL для длинного опроса.

Шаги для воспроизведения

  1. Настройте DISCOURSE_LONG_POLLING_BASE_URL в app.yml, указав пользовательский URL CDN.
  2. Пересоберите и запустите Discourse.
  3. Убедитесь, что фронтенд корректно считывает значение переменной окружения.
  4. Отслеживайте сетевые запросы message bus в инструментах разработчика браузера.

Некоторые скриншоты

Фронтенд корректно считывает настройку:

Ожидаемое поведение

Message bus должен использовать настроенную параметр long_polling_base_url для своих запросов, если он указан.

Фактическое поведение

Message bus продолжает делать запросы к “/”, независимо от конфигурации DISCOURSE_LONG_POLLING_BASE_URL.

Основная причина

Проблема находится в файле app/assets/javascripts/discourse/app/instance-initializers/message-bus.js.

Логика установки messageBus.baseUrl некорректно обрабатывала параметр сайта long_polling_base_url, из-за чего значение по умолчанию оставалось /, даже если был настроен пользовательский URL.

Исправление

Я выявил и исправил проблему в инициализаторе экземпляра message bus. Исправление гарантирует, что при задании siteSettings.long_polling_base_url и его отличии от “/” базовый URL message bus будет правильно настроен.

Pull Request: FIX: Respect long_polling_base_url setting for message bus configuration by chenglu · Pull Request #34477 · discourse/discourse · GitHub

Проверка

  • Подтверждено, что фронтенд корректно считывает переменную окружения.
  • Исправлена логика инициализации message bus для учёта настройки.
  • Все проверки форматирования пройдены.
  • Message bus теперь корректно использует настроенный базовый URL для длинного опроса.

Эта ошибка затрагивает любые установки Discourse, использующие пользовательскую настройку CDN с длинным опросом, что препятствует корректному использованию CDN для запросов message bus.


Благодарим @David_Ghost. Пожалуйста, перейдите к обсуждению здесь:

1 лайк

Понятно, отличное исправление, спасибо за вклад!

2 лайка