Message-bus dupliziert Header im Discourse Chat

Hallo Leute

Ich versuche zu verstehen, wie die von Discourse verwendete Message-Bus-Funktion funktioniert, um mit neuen Nachrichten und Ereignissen online zu bleiben. Insbesondere interessiert mich, wie sie im kürzlich erschienenen Discourse-Chat-Plugin verwendet wird.

Basierend auf dem, was @sam in https://meta.discourse.org/t/how-discourse-stays-online-message-bus-faye-long-polling/3238/7?u=jandres beschrieben hat, möchte ich diese Funktionalität zusammen mit den bereits vorhandenen in meine mobile Anwendung integrieren.

Durch Reverse Engineering sehe ich, dass jedes Mal, wenn ich einen Chatraum betrete, der Message-Bus über “https://mysite.com/message-bus/client_id/poll” abfragt, die Request-Header dupliziert werden, zum Beispiel:

Das funktioniert auf meiner Seite, aber wenn ich versuche, eine Anfrage von einer externen Seite oder einer mobilen App zu stellen, erhalte ich die Fehlermeldung:

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.

Alle anderen Routen sind in Ordnung, aber wenn ich versuche, den Message-Bus zu verwenden, passiert dies. Ich verwende das Beispiel von @sam im GitHub-Repository https://github.com/discourse/message_bus/tree/main/examples/chat als Inspirationsquelle.

Wenn Sie mir eine Orientierung oder ein wenig Hilfe geben können, wäre ich Ihnen sehr dankbar :pray:

Vielen Dank

1 „Gefällt mir“

Die Header sind hier alle eingerichtet:

Hoffentlich beantwortet das diese Frage?

Vielen Dank für Ihre schnelle Antwort.

Wenn ich das richtig verstehe, legt die message_bus ihre eigenen „Header“ fest? Gibt es eine Möglichkeit, die „Header“ zu verwenden, die bereits durch die Konfiguration von Discourse festgelegt wurden, zumindest diejenigen mit CORS-Verhalten?

Ich möchte doppelte „Header“ bei der Verwendung von message_bus vermeiden. Dies ermöglicht es mir, Anfragen außerhalb der Forum-Website zu stellen.

Sie weichen ziemlich stark von einer gängigen Konfiguration ab. Lesen Sie diese Datei sorgfältig durch, sie sollte alle Antworten enthalten.

Sie haben Recht. Wenn ich die message_bus von außerhalb der Website verwenden würde (wie in einer PWA oder einer mobilen Hybrid-App), was würden Sie mir raten?

Ich möchte die message_bus als externen Client verwenden, indem ich zum Beispiel die bereits von Ihnen erstellte JavaScript-Bibliothek verwende. https://github.com/discourse/message_bus/tree/main?tab=readme-ov-file#javascript-client

Ich frage mich, wie dieser Benutzer das möglich gemacht hat.

Er hat ein YouTube-Video hier veröffentlicht, das seinen Fortschritt auf mehreren Geräten zeigt.

Es sollte eine Möglichkeit geben, das message_bus-Gem außerhalb der Discourse-Website zu verwenden.

Vielen Dank, wenn Sie mich nur ein wenig mehr anleiten oder mir eine Idee geben können.

Ich fürchte, das ist zu individuell für mich, um hier Ratschläge zu geben. Ich schätze es sehr, dass mehr Leute Message Buses nutzen, aber Sie müssen hier die Dinge selbst debuggen.