Message-bus duplique les en-têtes dans le chat Discourse

Bonjour à tous

J’essaie de comprendre comment fonctionne la fonctionnalité de bus de messages utilisée par Discourse pour rester en ligne avec de nouveaux messages et événements. Je m’intéresse particulièrement à la manière dont elle est utilisée dans le récent plugin de chat Discourse.

D’après ce que @sam a décrit dans https://meta.discourse.org/t/how-discourse-stays-online-message-bus-faye-long-polling/3238/7?u=jandres, j’aimerais intégrer cette fonctionnalité avec celles qui existent déjà dans mon application mobile.

En faisant de l’ingénierie inversée, je vois que lorsque j’entre dans une salle de chat, à chaque fois que le bus de messages effectue un sondage via “monsite.com - This website is for sale! - monsite Resources and Information.”, les en-têtes de requête sont dupliqués, par exemple :

Cela fonctionne sur mon site, mais lorsque j’essaie de faire une requête depuis un site externe ou une application mobile, j’obtiens l’erreur :

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.

Toutes les autres routes fonctionnent bien, mais lorsque j’essaie d’utiliser le bus de messages, c’est ce qui se passe. J’utilise l’exemple que @sam a laissé dans le dépôt GitHub https://github.com/discourse/message_bus/tree/main/examples/chat comme source d’inspiration.

Si vous pouvez me donner une orientation ou un peu d’aide à ce sujet, je vous en serai très reconnaissant :pray:

Merci beaucoup

1 « J'aime »

les en-têtes sont tous configurés ici :

espérons que cela répond à cette question ?

Merci pour votre réponse rapide.

Donc, si je comprends bien, le message_bus définit ses propres « Headers » ? Existe-t-il un moyen d’utiliser les « Headers » déjà définis par la configuration de Discourse, du moins ceux qui ont un comportement CORS ?

Je cherche à éviter les « headers » en double lors de l’utilisation du message_bus. Cela me permet d’effectuer des requêtes en dehors du site du forum.

Vous vous éloignez considérablement d’une configuration courante, lisez attentivement ce fichier, il devrait contenir toutes les réponses.

Vous avez raison. Alors, si j’utilisais le message_bus en dehors du site (comme dans une PWA ou une application hybride mobile), que me conseillez-vous ?

J’aimerais utiliser le message_bus comme un client externe en utilisant, par exemple, la bibliothèque JavaScript que vous avez déjà créée. https://github.com/discourse/message_bus/tree/main?tab=readme-ov-file#javascript-client

Je me demande comment cet utilisateur a pu rendre cela possible.

Il a publié une vidéo YouTube ici montrant ses progrès sur plusieurs appareils.

Il devrait y avoir un moyen d’utiliser la gem message_bus en dehors du site Discourse.

Merci beaucoup si vous pouvez juste me guider un peu plus, ou me donner quelques idées.

Je crains que ce soit trop personnalisé pour que je puisse vous conseiller ici. J’apprécie beaucoup que davantage de personnes utilisent le bus de messages, mais vous allez devoir déboguer vous-même.