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
- Konfigurieren Sie
DISCOURSE_LONG_POLLING_BASE_URLinapp.ymlmit einer benutzerdefinierten CDN-URL. - Bauen und starten Sie Discourse neu.
- Überprüfen Sie, ob das Frontend den Umgebungsvariablenwert korrekt liest.
- 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.
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:
