Message-bus está duplicando cabeçalhos no chat do Discourse

Olá pessoal

Estou tentando entender como funciona o recurso de message-bus usado pelo Discourse para ficar online com novas mensagens e eventos. Especificamente, estou interessado em como ele é usado no plugin de chat recente do Discourse.

Com base no que @sam descreveu em https://meta.discourse.org/t/how-discourse-stays-online-message-bus-faye-long-polling/3238/7?u=jandres, gostaria de integrar essa funcionalidade junto com as que já existem, em meu aplicativo móvel.

Fazendo um pouco de engenharia reversa, vejo que quando entro em uma sala de chat, toda vez que o message-bus faz uma enquete via “meusite.com”, os cabeçalhos da solicitação são duplicados, por exemplo:

Isso funciona no meu site, mas quando tento fazer uma solicitação de um site externo ou aplicativo móvel, recebo o erro:

Access to XMLHttpRequest at 'https://forum-dev.srepe.com/message-bus/f6e2303ff7704f608ef2b821fe210e90/poll'
from origin 'http://localhost:8100' has been blocked by CORS policy:
The 'Access-Control-Allow-Origin' header contains multiple values
'https://forum-dev.srepe.com, *', but only one is allowed.

Todas as outras rotas estão boas, mas quando tento usar o message-bus, isso acontece. Estou usando o exemplo que @sam deixou no repositório do github https://github.com/discourse/message_bus/tree/main/examples/chat como fonte de inspiração.

Se você puder me dar uma orientação ou uma pequena ajuda com isso, ficarei muito grato :pray:

Muito obrigado

1 curtida

os cabeçalhos estão todos configurados aqui:

espero que isso responda a isso?

Obrigado pela sua rápida resposta.

Então, se eu entendi, o message_bus define seus próprios “Headers”? Existe alguma maneira de usar os “Headers” já definidos pela configuração do Discourse, pelo menos aqueles com comportamento CORS?

Busco evitar “headers” duplicados ao usar o message_bus. Isso me permite fazer requisições fora do site do fórum.

Você está se afastando bastante de uma configuração comum, leia esse arquivo cuidadosamente, ele deve ter todas as respostas.

Você está certo, então se eu usasse o message_bus de fora do site (como em um PWA ou aplicativo híbrido móvel), o que você me aconselharia.

Eu gostaria de usar o message_bus como um cliente externo usando como exemplo a biblioteca JavaScript que você já fez. https://github.com/discourse/message_bus/tree/main?tab=readme-ov-file#javascript-client

Gostaria de saber como este usuário conseguiu viabilizar isso.

Ele publicou um vídeo no YouTube aqui mostrando seu progresso em múltiplos dispositivos.

Deveria haver uma maneira de usar a gema message_bus fora do site do Discourse.

Muito obrigado se você puder me guiar um pouco mais, ou dar alguma ideia.

Receio que isto seja demasiado personalizado para que eu possa dar conselhos aqui, aprecio totalmente que mais pessoas usem o message bus, mas terá de depurar as coisas aqui.