Message Bus ignoriert DISCOURSE_LONG_POLLING_BASE_URL Einstellung und verwendet immer "/"

Problembeschreibung

Ich habe kürzlich einen neuen CDN-Dienst eingerichtet und DISCOURSE_LONG_POLLING_BASE_URL in app.yml konfiguriert, um den Long-Polling-Dienst vom ursprünglichen Server zu trennen.

Der Message Bus macht jedoch weiterhin Anfragen an “/” anstatt die konfigurierte Long-Polling-Basis-URL zu respektieren.

Schritte zur Reproduktion

  1. Konfigurieren Sie DISCOURSE_LONG_POLLING_BASE_URL in app.yml mit einer benutzerdefinierten CDN-URL.
  2. Bauen und starten Sie Discourse neu.
  3. Überprüfen Sie, ob das Frontend den Umgebungsvariablenwert korrekt liest.
  4. Beobachten Sie die Netzwerk-Anfragen des Message Bus in den Browser-Entwicklertools.

Einige Screenshots

Frontend liest die Einstellung korrekt:

Erwartetes Verhalten

Der Message Bus sollte die konfigurierte long_polling_base_url-Einstellung für seine Anfragen verwenden, wenn die Einstellung vorhanden ist.

Tatsächliches Verhalten

Der Message Bus macht weiterhin Anfragen an “/” unabhängig von der DISCOURSE_LONG_POLLING_BASE_URL-Konfiguration.

Grundursache

Das Problem liegt in app/assets/javascripts/discourse/app/instance-initializers/message-bus.js.
Die Logik zum Setzen von messageBus.baseUrl hat die Site-Einstellung long_polling_base_url nicht richtig verarbeitet, wodurch sie standardmäßig auf “/” gesetzt wurde, auch wenn eine benutzerdefinierte URL konfiguriert war.

Korrektur

Ich habe das Problem im Message Bus Instance Initializer identifiziert und behoben. Die Korrektur stellt sicher, dass, wenn siteSettings.long_polling_base_url gesetzt ist und nicht gleich “/” ist, die Message Bus Basis-URL korrekt konfiguriert wird.

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

Verifizierung

  • Bestätigt, dass das Frontend die Umgebungsvariable korrekt liest.
  • Die Logik zur Initialisierung des Message Bus wurde korrigiert, um die Einstellung zu respektieren.
  • Alle Formatierungsprüfungen sind bestanden.
  • Der Message Bus verwendet nun korrekt die konfigurierte Long-Polling-Basis-URL.

Dieser Fehler betrifft jede Discourse-Installation, die ein benutzerdefiniertes CDN-Setup mit Long Polling verwendet, und verhindert die ordnungsgemäße Nutzung des CDN für Message Bus-Anfragen.


Vielen Dank an @David_Ghost, besuchen Sie unsere Diskussion hier:

1 „Gefällt mir“

Ich verstehe, gute Korrektur, danke für deinen Beitrag!

2 „Gefällt mir“