Descrição do Problema
Recentemente, estava configurando um novo serviço de CDN e o DISCOURSE_LONG_POLLING_BASE_URL no app.yml, para separar o serviço de long polling do servidor original.
No entanto, o message bus continua a fazer requisições para “/” em vez de respeitar o URL base de long polling configurado.
Passos para Reproduzir
- Configure
DISCOURSE_LONG_POLLING_BASE_URLnoapp.ymlcom um URL de CDN personalizado. - Recompile e inicie o Discourse.
- Verifique se o frontend lê corretamente o valor da variável de ambiente.
- Observe as requisições de rede do message bus nas ferramentas de desenvolvedor do navegador.
Algumas capturas de tela
Frontend lendo corretamente a configuração:
Comportamento Esperado
O message bus deve usar a configuração long_polling_base_url configurada para suas requisições quando a configuração for fornecida.
Comportamento Atual
O message bus continua a fazer requisições para “/” independentemente da configuração DISCOURSE_LONG_POLLING_BASE_URL.
Causa Raiz
O problema está em app/assets/javascripts/discourse/app/instance-initializers/message-bus.js.
A lógica para definir messageBus.baseUrl não estava tratando corretamente a configuração do site long_polling_base_url, fazendo com que ela voltasse para “/” mesmo quando um URL personalizado estava configurado.
Correção
Identifiquei e corrigi o problema no inicializador de instância do message bus. A correção garante que, quando siteSettings.long_polling_base_url estiver definido e não for igual a “/”, ele configure corretamente o URL base do message bus.
Verificação
- Confirmei que o frontend lê corretamente a variável de ambiente.
- Corrigi a lógica de inicialização do message bus para respeitar a configuração.
- Todas as verificações de formatação foram aprovadas.
- O message bus agora usa corretamente o URL de long polling configurado.
Este bug afeta qualquer instalação do Discourse que use uma configuração de CDN personalizada com long polling, impedindo a utilização adequada da CDN para requisições do message bus.
Obrigado a @David_Ghost, por favor, dirija-se à nossa discussão aqui:
