# 消息总线忽略 DISCOURSE\_LONG\_POLLING\_BASE\_URL 设置，始终使用“/”

**URL:** <https://meta.discourse.org/t/message-bus-ignores-discourse-long-polling-base-url-setting-and-always-uses/379897>\
**Category:** Bug\
**Created:** [2025年八月22日 13:11 UTC](https://meta.discourse.org/t/message-bus-ignores-discourse-long-polling-base-url-setting-and-always-uses/379897 "2025-08-22T13:11:04Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![lukec](https://avatars.discourse-cdn.com/v4/letter/l/b5e925/32.png) [@lukec](https://meta.discourse.org/u/lukec)\
**Post date:** [2025年八月22日 13:11 UTC](https://meta.discourse.org/t/message-bus-ignores-discourse-long-polling-base-url-setting-and-always-uses/379897/1 "2025-08-22T13:11:04Z")

</div>

## 问题描述

我最近在设置一个新的 CDN 服务，并在 `app.yml` 中配置了 `DISCOURSE_LONG_POLLING_BASE_URL`，以便将长轮询服务分离到原始服务器。

但是，消息总线仍然向 “/” 发出请求，而不是遵循配置的长轮询基础 URL。

## 复现步骤

1. 在 `app.yml` 中使用自定义 CDN URL 配置 `DISCOURSE_LONG_POLLING_BASE_URL`
2. 重建并启动 Discourse
3. 验证前端是否正确读取了环境变量值
4. 在浏览器开发者工具中观察消息总线网络请求

## 一些截图

**前端正确读取设置：**

 ![front-end, the data-preloaded content](https://global.discourse-cdn.com/meta/original/4X/2/b/6/2b6d9d9b2bd1d6a7a82714f46b48ef91d4b6289d.png)

## 预期行为

当提供了 `long_polling_base_url` 设置时，消息总线应使用配置的 `long_polling_base_url` 设置来发出请求。

## 实际行为

消息总线继续向 “/” 发出请求，而忽略了 `DISCOURSE_LONG_POLLING_BASE_URL` 配置。

## 根本原因

问题出在 `app/assets/javascripts/discourse/app/instance-initializers/message-bus.js`。

设置 `messageBus.baseUrl` 的逻辑未能正确处理 `long_polling_base_url` 站点设置，导致即使配置了自定义 URL，它也默认为 “/”。

## 修复

我在消息总线实例初始化器中识别并修复了该问题。该修复确保当 `siteSettings.long_polling_base_url` 被设置且不等于 “/” 时，它能正确配置消息总线基础 URL。

**Pull Request:** [FIX: Respect long\_polling\_base\_url setting for message bus configuration - Pull Request #34477 - discourse/discourse - GitHub](https://github.com/discourse/discourse/pull/34477)

## 验证

- 确认前端正确读取了环境变量
- 修复了消息总线初始化逻辑以遵循设置
- 所有格式检查均通过
- 消息总线现在正确使用了配置的长轮询基础 URL

此错误会影响任何使用自定义 CDN 设置进行长轮询的 Discourse 安装，阻止消息总线请求正确利用 CDN。

* * *

感谢 @David_Ghost，请在此处查看我们的讨论：

> [@Discourse 全站 CDN 加速](https://meta.discourse.org/t/full-site-cdn-acceleration-for-discourse/21467/43?u=lukec):
>
> 您好， 我正在我的论坛上重新设置。我只剩一件事不明白。如何设置长轮询 URL？我需要创建一个子域，然后将其添加到“Site.Setting.Longpolling（我不确定配置的确切名称）”中？ 谢谢

---

_[View the full topic](https://meta.discourse.org/t/message-bus-ignores-discourse-long-polling-base-url-setting-and-always-uses/379897)._
