Long-Polling-Nachrichtenbus-Benachrichtigungen aus React-Anwendung

Hallo zusammen,

ich bin gerade dabei, ein React-Frontend für einen Headless-Discourse-Server zu erstellen.

Ich arbeite aktuell an der Implementierung der Benachrichtigungsanzahl, ähnlich wie die über dem Benutzer-Avatar hier. Diese soll in Echtzeit über das Discourse message_bus per Long Polling aktualisiert werden.

Ich habe die Datei message-bus.js gesehen, aber sie ist sehr ausführlich und für eine moderne Anwendung veraltet. Ich möchte jQuery und ein globales Objekt nicht einbinden, wenn wir dies doch im Rahmen der React-Anwendung erledigen sollten.

Außerdem habe ich in /initializers/subscribe-user-notifications.js.es6 gesehen, dass wir uns für /notification/userid anmelden. Ich kann jedoch keine Dokumentation für die verfügbaren Kanäle finden, auf die man sich anmelden kann, oder welche Antworten zu erwarten sind.

Ich suche nach Hilfe zur besten Vorgehensweise, um das Abonnement des message_bus in einer modernen JavaScript-Anwendung zu implementieren.

Vielen Dank! :+1:

Discourse ist eine moderne JavaScript-Anwendung :stuck_out_tongue:

Der beste Weg ist die Verwendung der message-bus-Bibliothek. Aktuell hängt sie noch von jQuery ab, aber wenn du einen Pull Request einreichen möchtest, um diese Abhängigkeit zu entfernen, wird das sicher in Betracht gezogen.

Messagebus soll nur innerhalb von Discourse verwendet werden; es ist keine wirklich „öffentliche“ API. Die beste Informationsquelle sind die JavaScript-Dateien im Codebase, die du bereits gefunden hast :+1:

Kleine Korrektur :slight_smile:

MessageBus versucht zunächst, jQuery zu verwenden, und weicht dann auf eine reine XMLHttpRequest-Version aus, die in der Datei message-bus-ajax.js enthalten ist. message-bus-ajax.js muss nach message-bus.js geladen werden, damit sie verwendet wird. Du kannst diese Option durch eine Funktion überschreiben, die eine Ajax-Anfrage auf andere Weise ausführt.

Danke @david, @sam, ich wollte nicht andeuten, dass Discourse keine moderne Anwendung ist – das ist es offensichtlich. Ich habe zuerst message-bus.js gefunden und war unsicher, ob das wirklich die bewährte Methode ist. Es funktioniert einwandfrei, also ist das kein Problem.

Danke!

Discourse Core verwendet exakt dieselbe Datei, es ist die richtige Datei ™