Message-bus sta duplicando le intestazioni nella chat di Discourse

Ciao ragazzi

Sto cercando di capire come funziona la funzionalità message-bus utilizzata da Discourse per rimanere online con nuovi messaggi ed eventi. Nello specifico sono interessato a come viene utilizzata nel recente plugin di chat di Discourse.

Basandomi su ciò che @sam ha descritto in https://meta.discourse.org/t/how-discourse-stays-online-message-bus-faye-long-polling/3238/7?u=jandres, vorrei integrare questa funzionalità insieme a quelle già esistenti, nella mia applicazione mobile.

Facendo un po’ di reverse engineering vedo che quando entro in una chatroom, ogni volta che il message-bus effettua un poll tramite “https://mysite.com/message-bus/client_id/poll”, le intestazioni della richiesta vengono duplicate, ad esempio:

Quindi questo funziona sul mio sito, ma quando provo a effettuare una richiesta da un sito esterno o da un’app mobile, ottengo l’errore:

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.

Tutte le altre rotte vanno bene, ma quando provo a usare il message-bus succede questo. Sto usando l’esempio che @sam ha lasciato nel repository GitHub https://github.com/discourse/message_bus/tree/main/examples/chat come fonte di ispirazione.

Se potete darmi un orientamento o un piccolo aiuto con questo, vi sarò molto grato :pray:

Grazie mille

1 Mi Piace

i header sono tutti impostati qui:

spero che questo risponda?

Grazie per la tua rapida risposta.

Quindi, se ho capito bene, il message_bus imposta i propri “Headers”? C’è un modo per utilizzare gli “Headers” già impostati dalla configurazione di Discourse, almeno quelli con comportamento CORS?

Cerco di evitare “headers” duplicati quando uso message_bus. Questo mi permette di effettuare richieste al di fuori del sito del forum.

Ti stai allontanando parecchio da una configurazione comune, leggi attentamente quel file, dovrebbe avere tutte le risposte.

Hai ragione, quindi se usassi il message_bus dall’esterno del sito (come in un’app PWA o Mobile Hybrid) cosa mi consiglieresti?

Vorrei usare il message_bus come client esterno utilizzando come esempio la libreria JavaScript che hai già realizzato. https://github.com/discourse/message_bus/tree/main?tab=readme-ov-file#javascript-client

Mi chiedo come questo utente sia riuscito a renderlo possibile.

Ha pubblicato un video su YouTube qui mostrando i suoi progressi su più dispositivi.

Dovrebbe esserci un modo per utilizzare la gemma message_bus al di fuori del sito di discourse.

Grazie mille se puoi guidarmi solo un po’ di più, o darmi qualche idea.

Temo che questo sia troppo personalizzato perché io possa fornire consigli qui, apprezzo totalmente che più persone utilizzino il message bus, ma dovrai eseguire il debug delle cose qui.